美文网首页
PHP -- 字符串相关函数(1)

PHP -- 字符串相关函数(1)

作者: 潘肚饿兵哥哥 | 来源:发表于2019-07-22 22:38 被阅读0次

字符串函数和数组函数很重要

/* 学习大纲
 
 1.定义字符串的方法
 2.单双引号的用法
 3.单双引号转义的不同
 4.单双引号对变量解析的不同
 5.如何选择单双引号
 6.字符串常用函数分类
 */


/* 定义字符串的方法
 
 1.单引号;(高效)
 2.双引号;(简便)
 3.heredoc
 4.nowdoc
 */


/* 单双引号的用法
 $a = 'abcdefg';
 echo $a;
 $a = 'abcd'e'fg';
 echo $a;//想想差在哪里
 
 $a = "abcdefg";
 echo $a;
 $a = "abcd"e"fg";
 echo $a; //想想问题出在哪里
 */


/* 
单双引号对变量解析的不同
 
 双引号解析字符串内的变量
 单引号不解析
 
 $name = 'zhang';
 echo '$name';
 echo "$echo";
 */


/* 字符串常用函数分类

 1.字符串长度函数
 2.查找字符位置函数
 3.字符串替换函数
 4.提取子字符函数(双字节)
 5.分割、链接、反转函数
 6.去除、增加空格函数
 7.HTML代码\数据库安全处理有关函数
 8.比较字符函数
 9.字符大小写转换函数
 */



/* 
strtolower($str)字符串转换为小写
strtoupper($str)字符串转换为大写
ucfirst($str)将字符串第一个字符转为大写
ucwords($str)将每个单词首字母转为大写
 */

$stu = ['张三', '男', 18];
/* $name = $stu[0];
$gender = $stu[1];
$age = $stu[2];
echo $name, $gender,$age;
 */

list($name, $gender,$age) = $stu;//这行代码等同于上面注释部分,括号中的变量个数小于等于数组的长度
//
echo $name, $gender,$age;

获取字符串的长度(\color{rgba(254, 67, 101, .8)}{英文情况:}):
空格也会被计算在内:

$str = 'hello world';
echo strlen($str);
echo '<hr />';

$str2 = 'helloworld';
echo strlen($str2);
image.png

获取字符串的长度(\color{rgba(254, 67, 101, .8)}{中文情况下,空格也只算一个字符}):

$str = '你好,世界';
//不同的编码,显示的长度数量是不同的,utf-8显示15个,gbk显示10个
//gbk编码每个汉字占2个字节,utf-8每个汉字占三个字节
echo strlen($str);
echo '<hr />';

$str2 = '你好, 世界';
echo strlen($str2);
image.png

\color{rgba(254, 67, 101, .8)}{mb\_strlen( string , 'UTF-8');返回字符串的长度}
\color{rgba(254, 67, 101, .8)}{phpstudy版本低于5.4的话(包含5.4),不写'UTF-8'返回值还是15,写了就是5了}

$str = '你好,世界';
echo mb_strlen($str, 'UTF-8');
image.png

函数名是不区分大小写的,函数名可以大小写混写。不会报错,依然能得到该得的的结果
\color{rgba(254, 67, 101, .8)}{strpos — 查找字符串首次出现的位置}
\color{rgba(254, 67, 101, .8)}{strrpos — 查找字符串最后一次出现的位置}
\color{rgba(254, 67, 101, .8)}{stripos — 查找字符串首次出现的位置,不区分大小写}

//strpos — 查找字符串首次出现的位置
//返回值就是首次出现的索引值位置。 如果查找的字符不存在,返回false
$str = 'adsfgejeargwertjkty';
$pos = strpos($str, 'd');
echo $pos;
image.png

查找一个字符是否存在:

//strpos — 查找字符串首次出现的位置
//返回值就是首次出现的索引值位置。 
$str = 'adsfgejeargwertjkty';
$sub_str = 'a';
$pos = strpos($str, $sub_str);
//这样的写法如果查找的是a的话,返回值是0,就是false,所以会输出a不存在,所以要区分0和false,所以要用不全等$pos !== false,而不是直接写$pos
if($pos !== false ){
    echo '存在';
}else{
    echo '不存在';
}
var_dump($pos);

下面截图中的0就是查找到的字符的索引
image.png
也可以查找连续的字符,返回值是第一个字符的索引
如果查找的字符不连续的话,会返回false

$str = 'adsfgejeargwertjkty';
$sub_str = 'ge';
$pos = strpos($str, $sub_str);
if($pos !== false ){
    echo '存在';
}else{
    echo '不存在';
}
var_dump($pos);
image.png

查找最后一次出现的位置:

$str = 'aydsfgejeargwertjkty';
$sub_str = 'y';
$pos = strrpos($str, $sub_str);
if($pos !== false ){
    echo '存在';
}else{
    echo '不存在';
}
var_dump($pos);
下图显示,要查找的最后一个‘y’在索引为19的位置(第二十个字符)
image.png

\color{rgba(254, 67, 101, .8)}{strstr();查找首次出现到结尾的字符串}
\color{rgba(254, 67, 101, .8)}{strrchr();查找最后一次出现到结尾的字符串}

strstr():

$str = 'gejeabrgwydsabfertjkty';
echo strstr($str, 'ab');
image.png

strrchr():

$str = 'gejeabrgwydsabfertjkty';
echo strrchr($str, 'ab');
image.png

\color{rgba(254, 67, 101, .8)}{str\_replace();字符串替换函数}

str_replace(search,replace,$str):从$str中查找search用replace来替换(用的最多的)

str_ireplace(search,replace,$str);和上面的函数功能一样,只是这个不区分大小写,上面的函数区分大小写

strtr($str,search,replace)这个函数中的replace不能为""

substr_replace($str,$rep,$start[,length]);$str原始字符串,$rep替换后的新字符串,$start起始位置,$length替换的长度,该项可选

//str_replace(search,replace,\$str)字符串替换函数
$str = 'gejeabrgwAdsabfertjkty';
echo str_replace('a', '*', $str);//第一个是替换哪一个,第二个参数是替换成什么,第三个参数是替换哪一个函数

这个函数区分大小写:A没有被替换
image.png

\color{rgba(254, 67, 101, .8)}{不区分大小写str\_ireplace:}

//str_ireplace(search,replace,\$str)字符串替换函数
$str = 'gejeabrgwAdsabfertjkty';
echo str_ireplace('a', '*', $str);//第一个是替换哪一个,第二个参数是替换成什么,第三个参数是替换哪一个函数

上面的str_replace区分大小写,所以 A 没有被替换
str_ireplace不区分大小写,A 也被替换了
image.png

替换多种字符串的方法:

$str = 'gejeabrgwAdsabfertjkty';
$str2 = str_ireplace('a', '*', $str);

echo str_replace('b', '#', $str2);

前面已经替换的需要定义函数接收,然后再赋值给后面的函数,就可以完成替换多种字符串
image.png

===========================================

上面这种替换多种花字符串的方法虽然可行,但是太麻烦,每换一次,就要赋一个函数,可以像下面这样写:
想加多少都可以,直接写在中括号里就行,一一对应

$str = 'gejeabrgwAdsabfertjkty';
echo str_replace(['a','b'],['*','#'], $str);

如果第二个中括号里面只有一个'*'
没有'#'的话,b会被屏蔽掉,不会显示出来
image.png

要替换的字符串和替换的的字符不对应的情况:

$str = 'gejeabrgwAdsabfertjkty';
echo str_replace(['a','b'],['*'], $str);

要替换的是a、b,但是后面只给了一个‘*’,结果就是b被屏蔽了,没有显示出来
image.png
$str = 'gejeabrgwAdsabfertjkty';
echo str_replace(['a','b'],['*','#','@'], $str);

上面是前面多,后面少的情况,
现在是前面少,后面多的情况,
结果是没有影响,后面多给的替换元素@并没有 起作用
image.png

相关文章

网友评论

      本文标题:PHP -- 字符串相关函数(1)

      本文链接:https://www.haomeiwen.com/subject/gxhrlctx.html