Correcting teacher:Guanhui
Correction status:qualified
Teacher's comments:代码写的挺好,很规范。
字符串的定义方式
注意:字符串的大小上限是2G
1.单引号定义字符串
// 单引号定义一个字符串
例:$str = 'String';
// 单引号中不能解析变量
例:
echo 'This is a $str','<br>'; // 输出 This is a $str[将变量名原样输出]
// 单引号中的特殊字符不能被解析
echo 'hello \n\r world','<br>'; // 输出 hello \n\r world 将特殊字符原样输出
// 单引号中出现单引号[单引号不能解析单引号]
// 字符串中的单引号有二重意义: 定界符, 单引号
echo 'hello 'world''; // 直接报错
// 解决单引号中出现单引号,让他正常输出
echo 'hello \'world\'','<br>'; // 输出 hello 'world'
// 在字符串中输出转义字符:\.连续两个\\就可以
echo 'hello world \\','<hr>'; // 输出 hello world \
总结:单引号中可以解析双引号,单引号中不能解析变量,单引号不能解析单引号,单引号不能解析特殊字符
2.双引号定义字符串
例:$srt = "String";
// 双引号中也不能解析双引号
// echo "hello "world" "; // 报错
// 双引号中解析双引号也是使用转义字符转义掉
echo "hello \"world\""; // 输出 hello "world"
// 双引号可以解析变量
echo "This is a $str",'<br>'; // 输出 This is a String
// 双引号可以解析特殊字符
// \r \n在源代码中可以查看是否被解析生效
echo "hello \r\n world",'<hr>'; // 输出 hello world \
// 当变量和字符串连在一起时如何分辨解析出变量
// echo "This is a $str123"; // 输出报错 $str123变量是未定义的
// 解决办法使用一个{}把变量名括起来
echo "This is a {$str}123",'<br>';// 输出 This is a String123
总结:双引号中不能解析双引号,双引号中可以解析单引号,双引号可以解析变量,双引号中可以解析特殊字符,当变量名和字符串连在一起时使用{}把变量名括起来
3.heredoc定义字符串 可以看做是双引号的字符串plus+
// heredoc中的字符串不需要双引号定界符
// 和双引号的区别:和双引号的区别:里面的字符串不需要双引号定界符, 可在里面解析双引号
// 非常适合html+php混编:写模板
例:
// 输出 String[字体颜色蓝色]
echo <<< HELLO
<span style="color:blue">$str</span>
HELLO;
4.nowdoc定义字符串 可以看做是单引号字符串的PLus+
// 名字一定要加上单引号否则会自动认为是heredoc
// 和单引号的区别:里面的字符串不需要双引号定界符, 可在里面解析单引号
例:
// 输出 This is a 'world'
echo <<< 'world'
This is a 'world'
world;
字符串函数
字符串打印输出函数
1.printf();将输出的字符串按指定的格式模板输出
printf('模板', 替换占位符的值[类型是字符串类型])
这里将world替换掉字符串'hello %s'中的%s占位符
例1:
printf('Hello %s','world'); // 输出 Hello world
例2:
printf('SELECT * FROM `%s` LIMIT %d','user',10); // 输出 SELECT * FROM `user` LIMIT 10
2.vprintf(): 功能与printf()一样,参数不同[参数是一个数组]
vprintf('模板',替换占位符的值[值类型是数组类型]):
例:
vprintf('SELECT * FROM `%s` LIMIT %d',['user',5]); // 输出 SELECT * FROM `user` LIMIT 5
3.sprintf():返回格式化字符串,而不是输出
sprintf('模板',替换占位符的值[值类型是字符串类型])
例:
$sql = sprintf('SELECT * FROM `%s` LIMIT %d','stu',10);
echo $sql; // 输出 SELECT * FROM `stu` LIMIT 10
4.vsprintf();于sprintf();功能相同,参数不同[参数为数组格式]
vsprintf('模板',替换占位符的值[值类型是数组类型]);
例:
$sql = vsprintf('SELECT * FROM `%s` LIMIT %d',['stu',5]);
echo $sql; // 输出SELECT * FROM `stu` LIMIT 5;
字符串分割与查询替换函数
implode();和join()函数:把数组元素组合为字符串
// implode('以什么分割',被分割的数组);:把数组元素组合为字符串
例:
echo implode('--',['html','css','php']),'<br>'; // 输出 html--css--php
// join('分隔符',被分割的数组)把数组元素组合为一个字符串和implode*()函数功能相同
echo join('--', ['html', 'css','php']),'<hr>';
explode();函数:把字符串打散为数组
// explode("以什么分割",被分割的字符串);: 把字符串打散为数组;
例:
$str = "Hello world I Love beijing";
print_r(explode(" ",$str)); // 输出 Array ( [0] => Hello [1] => world [2] => I [3] => Love [4] => beijing )
list()函数:把数组中的每个元素都赋给一个单独的变量
$arr = ["Dog","Cat","Horse"];
list($a,$b,$c) = $arr;
echo $a,'<br>',$b,'<br>',$c,'<hr>'; // 输出 Dog,Cat,Horse
substr();函数:截取字符串
substr(要截取的字符串,截取长度[默认是到字符串结束],从起始到结束长度) 截取字符串
例:
echo substr('abcdef',2),'<br>'; // 输出 cdef
// 从第二个开始截取到他后面的两个结束
echo substr('abcdef', 2, 2),'<br>'; // 输出 cd
// 开始数值也可为负数
echo substr('abcdef', -2),'<br>'; // 输出 ef
echo substr('abcdef', -4,2),'<hr>'; // 输出 cd
str_split():函数:把字符串转为数组,可指定数组元素的宽度
str_split(要转换为数组的字符串,指定数组元素的宽度值): 把字符串转为数组,可指定数组元素的宽度
例:
print_r(str_split('baidu.com', 2)); // 输出 Array ( [0] => ba [1] => id [2] => u. [3] => co [4] => m )
// php中utf编码格式下一个中文占三个字节 ,一个英文占一个字节
print_r(str_split('这是abc',3)); // 输出 Array ( [0] => 这 [1] => 是 [2] => abc )
file_get_contents()函数:把文件中的内容一字符串的形式读取出来
// file_get_contents('文件名')把文件中的内容一字符串的形式读取出来
提前创建一个test.csv文件
例:
$csvStr = file_get_contents('test.csv');
// 将字符串打散为数组
print_r(explode("\n", $csvStr)); // 输出 Array ( [0] => 1 [1] => admin [2] => abc@qq.com )
str_pad()函数:填充字符串的右侧
str_pad('要填充的字符串','填充长度','填充内容','填充在字符串的哪边[可选:默认在后边]'):将字符串填充到指定长度
例:
echo str_pad('php', 10, '='); // 输出 php==========
str_replace() 字符串替换
str_replace('被替换的值','替换上去的新值','被搜索的字符串');
例:
echo str_replace('\\','/','\app\home\Index.php'); // 输出 /app/home/Index.php
// 使用$count()函数查看被替换的值在字符串中被替换了几次
echo str_replace('php', '*','php.cn,php,thinkphp', $count); // 输出 *.cn,*,think*
echo 'php被替换了'.$count.'次';
// 被替换的值也可以是一个数组
$search = array('a','c','d');
echo str_replace($search,'#','This a b c d e f g'); // 输出 This # b # # e f g
// 替换的新值也可以是一个数组
echo str_replace($search,array('A','C','D'),'This a b c d e f g'); // 输出 This A b C D e f g
trim()函数:从两边删除指定字符
trim('被查找的字符串','要移出的字符')
例:
$str = ' This is a dog ';
// strlen();字符串的长度计算
echo strlen(trim($str)),'<br>'; // 输出 13[13是$str值得字符串的字节数]
例:
$str1 = 'aabbccdd hello world ddccbbaa';
echo trim($str1,'aa'),'<br>'; // 输出 bbccdd hello world ddccbb
// 限定祛除范围
// a..z是祛除a到z所有字母
例:
echo trim($str1,'a..z'),'<br>'; // 输出 hello world
echo trim($str1,'a..b'),'<hr>'; // 输出 ccdd hello world ddcc
// ltrim()祛除左边指定字符
例:
echo ltrim($str1,'aa'),'<br>'; // 输出 bbccdd hello world ddccbbaa
// rtrim()祛除右边指定字符
例:
echo rtrim($str1,'aa'),'<br>'; // 输出 aabbccdd hello world ddccbb
strpos()函数:查找指定字符在字符串中首次出现的位置;
strpos('被查找的字符串','查找的内容',查找的起始位置)
例:
echo strpos('This is a dog','dog'); // 输出 10[10是dog中d在字符串中首次出现的位置的下标(下标从0开始)]
echo strpos('This is a dog','is',4); // 输出 5[一位开始查找的位置是4直接绕过了前面那一个is]
strstr()函数:搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE。
strstr('被搜索的字符串','要搜索的字符串',默认false)
例:
echo strstr('images/banner.jpg','.');// 输出 .jpg
// 第三个参数为true默认值为 "false" 的布尔值。如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分
echo strstr('images/banner.jpg','.', true); // 输出 images/banner