1. 字符串创建方式
1.1 使用单引号创建
示例如下:
<?php
$str = 'friends';
// 1.单引号中的变量不能解析
echo 'we are $str','<br>';
// 2.可使用字符串拼接的方式
echo 'we are '.$str,'<br>';
// 3.特殊字符也不能解析
echo 'we are \n\t'.$str,'<br>';
// 4.单引号中又出现单引号,需要转义
echo 'we are \'good\' '.$str,'<br>';
// 5.在单引号中直接使用双引号
echo 'we are "good" '.$str,'<hr>';
1.2 使用双引号创建
示例如下:
<?php
$str = 'Hello';
// 1.双引号中的变量可以解析
echo "$str World",'<br>';
// 2.变量标示符(花括号)
echo "$strbig World",'<br>';
echo "{$str}big World",'<br>';
// 3.双引号可以解析特殊字符
echo "{$str}\nWorld\n\n123\\";// 在源代码中可查看到效果
1.3 heredoc的方式
示例如下:
<?php
// 相当于双引号的加强版
$str = 'eat meat';
// 1.设置字符串中文本样式
echo "<span style=\"color:red\">$str</span>",'<br>';//必须使用转义符
// 2. 通过heredoc的方式,其中AAA可以省略双引号,很适合混编使用
echo <<<AAA
<span style="color:red;">$str</span>
AAA,'<hr>';
1.4 nowdoc的方式
示例如下:
<?php
// 相当于单引号的加强版,其中BBB必须加上单引号,适合用在大量字符串输出时
echo 'look at the computer','<br>';
echo <<<'BBB'
look at the computer
BBB;
注:字符串大小上限:2G
2. 常用字符串函数
2.1 格式打印输出函数
示例如下:
<?php
// 1. printf():将输出的字符串按照指定的格式模板输出,语法:printf('模板',将模板中的占位符替换)
printf('watch %s','TV');
echo '<br>';
printf('money %d',100);
echo '<br>';
// 示例:写一条查询语句
// printf('SELECT * FROM 表名称 LIMIT 数量','...','...')
printf('SELECT * FROM %s LIMIT %d','form',15);
echo '<br>';
// 2.vprintf(),功能与printf()一样,只是参数不一样
vprintf('SELECT * FROM %s LIMIT %d',['form',15]);
// 3.sprintf(),不会输出,只返回格式化字符串
// 示例:将一条语句写入一个文件
$par = sprintf('SELECT * FROM %s LIMIT %d','form',20);
file_put_contents('temp.txt',$par);
// 4.vsprintf(),也是功能与sprintf()一样,只是参数不一样
$par1 = vsprintf('SELECT * FROM %s LIMIT %d',['form',30]);
file_put_contents('temp1.txt',$par1);
2.2 分割查询与替换
implode()
:将数组拼接为字符串,示例如下:
<?php
$arr = ['first','second','third','fourth','fifth'];
echo implode('-',$arr),'<br>';
// 同名函数join,效果一样
echo join('|',$arr),'<hr>';
explode()
:将字符串转为数组,示例如下:
<?php
$site = 'www.baidu.com';
echo '<pre>'.print_r(explode('.',$site),true).'</pre>','<br>';
// 数组元素为2
echo '<pre>'.print_r(explode('.',$site,2),true).'</pre>','<br>';
// 删除最后一个元素
echo '<pre>'.print_r(explode('.',$site,-1),true).'</pre>','<br>';
list()
:将一个索引数组中的元素一次赋值给一些独立变量,示例如下:
<?php
list( $a, $b, $c) = ['dog','cat','fish'];
echo "I have animals:$a and $b and $c",'<hr>';
substr()
:返回字符串的一部分,语法:substr(string,start,length)
,示例如下:
<?php
$str = 'hello world';
echo substr($str,4),'<br>';
echo substr($str,3,6),'<br>';
echo substr($str,-2),'<hr>';
str_split()
:将字符串分割到数组中,可指定数组元素的宽度,语法:str_split(string,length)
,示例如下:
<?php
$str = '我想睡觉了啊';
echo '<pre>'.print_r(str_split($str,3),true).'</pre>';
echo '<pre>'.print_r(str_split($str,6),true).'</pre>';
str_getcsv()
:解析 CSV 格式字段的字符串,并返回一个包含所读取字段的数组,示例如下:
<?php
$str = file_get_contents('test.csv');
$arr = explode(",",$str);
var_dump($arr);
2.3 字符串填充、重复、替换、删除、查找、切割
str_pad()
:填充字符串,语法:str_pad(string,length,pad_string,pad_type)
,如果长度小于原始字符串长度,则不进行任何操作,示例如下:
<?php
$str = 'hello';
echo str_pad($str,10,'.'),'<br>';
echo str_pad($str,20,'.',STR_PAD_BOTH),'<hr>';
str_repeat
:把字符串重复,示例如下:
<?php
echo str_repeat('A',10);
str_replace()
:字符串替换,语法:str_replace(find,replace,string,count)
,count可以计算被替换了几次,示例如下:
<?php
$str = 'abc,abc,abc,abc';
echo str_replace('a','y',$str,$count),'<br>';
echo "替换了{$count}次<hr>";
// 示例:禁用违禁词
$forbidden = ['性感','小蜜','约会'];
echo str_replace($forbidden,'**','性感天使,小蜜甜甜,约会饮酒'),'<br>';
// 通过数组可以个性化替换
echo str_replace($forbidden,['***','+++','###'],'性感天使,小蜜甜甜,约会饮酒'),'<br>';
trim()
:移除字符串两侧的空白字符或其他预定义字符,示例如下;
<?php
$str = " \n\n\nhello world\n\n ";//查看源代码
echo $str,'<br>';
echo trim($str),'<br>';
// 去除world中的ld
echo trim('world','ld'),'<br>';
// 去除字符串中的数字
echo trim('123abcde456','1..9'),'<br>';
strpos()
:查找字符串在另一字符串中首次出现的位置,从0开始查找,示例如下:
<?php
$str = 'we are good friends';
echo 'e第一次出现的位置:'.strpos($str,'e'),'<br>';
// 从指定位置开始查找
echo '从索引为2开始查找e:'.strpos($str,'e',2);
strstr()
:搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,示例如下:
<?php
$str = 'I have to go';
echo strstr($str,'to'),'<br>';
// 传入第二个参数true,表示返回字符串的前面部分
echo strstr($str,'to',true),'<br>';
echo '<hr>';
// 示例:获取邮箱后半部分,并去掉@符号
$email = 'username123@qq.com';
echo ltrim(strstr($email,'@'),'@'),'<br>';
// 拿到前半部分
echo strstr($email,'@',true),'<br>';
总结
学习了创建字符串的四种方式:单引号、双引号、heredoc、nowdoc
学习了一些常用字符串函数,用于字符串填充、重复、替换、删除、查找、切割,其他还有很多老师没有讲到的函数,自己看手册。