字符串函数和数组函数很重要
/* 学习大纲
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;
获取字符串的长度():
空格也会被计算在内:
$str = 'hello world';
echo strlen($str);
echo '<hr />';
$str2 = 'helloworld';
echo strlen($str2);
image.png
获取字符串的长度():
$str = '你好,世界';
//不同的编码,显示的长度数量是不同的,utf-8显示15个,gbk显示10个
//gbk编码每个汉字占2个字节,utf-8每个汉字占三个字节
echo strlen($str);
echo '<hr />';
$str2 = '你好, 世界';
echo strlen($str2);
image.png
$str = '你好,世界';
echo mb_strlen($str, 'UTF-8');
image.png
函数名是不区分大小写的,函数名可以大小写混写。不会报错,依然能得到该得的的结果
//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
strstr():
$str = 'gejeabrgwydsabfertjkty';
echo strstr($str, 'ab');
image.png
strrchr():
$str = 'gejeabrgwydsabfertjkty';
echo strrchr($str, 'ab');
image.png
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
//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
网友评论