字符串的创建方式
1.单引号创建
单引号中的变量不能被解析,想要被解析要用字符串拼接的方式
$str='hello world!';
echo '小明$str';
echo '<br>';
echo '小明'.$str; //字符串拼接
单引号的特殊字符不能被解析出来
echo 'hello,china \n\r haha';
echo '<br>';
在单引号中又出现单引号 需要用\进行转义
字符串中的单引号有两重意义,定界符和单引号。echo 'hello,\'china\'';
如果想在字符串中输入\,则也输入两个\第一个是转义echo 'hello,\\china\\';
2.双引号创建
双引号中的变量可以被解析出来echo "小明$str 是个好学生"; //变量后面必须有空格
将变量和其后面字符连接起来,给变量加个大括号{},或者只给$后面的标识加上也可。
echo "小明 {$str}真是个好学生";
echo '<br>';
echo "小明 ${str}真是个好学生";
双引号能解析回车换行,回车换行在浏览器中被解析成单个空格echo "hello,china \n\r haha";
双引号中可以转义特殊字符
echo "hello,\"china\"";
echo '<br>';
echo "hello,\\china\\";
3.heredoc创建 可以看到是双引号的升级版
- heredoc中的字符串不需要双引号定界符
- 非常适合HTML+PHP编写模板
- 标识可以自己定义,开始和结束的必须一致,不区分大小写。
- 开始的可以加上引号,也可不加,后面不能有空格。
- 结尾的最好顶着开头写。
$str="北京";
echo <<< Hi
hello,<span style="color:red">$str</span>
Hi;
4.nowdoc 可以看到是单引号的升级版
起始必须加上单引号。适合书写大量的文本内容echo <<< 'NOW'
hello,<span style="color:red">上海</span>
NOW;
字符串打印输出函数
printf将输出的字符串按指定的格式输出
- 格式 printf(‘模板’,替换掉模板中的占位符)
- 如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 “\$” 组成
printf('%s的体重是%d公斤','小明','40');
printf('%1$s的体重是%2$d公斤,但是%1$s偏重','小明','40');
vprintf() 中的参数位于数组中,与 printf() 不同。
数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。vprintf('%s的体重是%d公斤',['小红','30']);
echo '<br>';
vprintf('%1$s的体重是%2$d公斤,但是%1$s偏重',['小红','30']);
sprintf() 格式化字符,是返回,但是不输出
echo sprintf('%s的体重是%d公斤','小刚','50');
//用echo 来显示
vsprintf() 格式化字符,是返回,但是不输出,参数位于数组中
echo vsprintf('%1$s的体重是%2$d公斤,但是%1$s偏重',['小强','60']);
字符串分割查询函数
implode(): 将数组组装成一个字符串
也可以用join() 意义一样
$arr=['北京','上海','广州','深圳'];
echo implode('-',$arr).'<br>';//第一个参数是分割符
explode();字符串组装成数组
explode(分隔符,字符串,数量)
$str='apple,orange,banner,pear';
print_r (explode(',',$str));
print_r (explode(',',$str,2)); //
list($fruit1,$fruit2,$fruit3)=explode(',',$str);
echo '<br>';
echo $fruit1,$fruit2,$fruit3;
//list()用于在一次操作中给各个变量赋值。
list($a,$b)=[100,200];
echo $a,$b;
//输出 100 200
substr()分割函数
echo substr('abcdefg',0).'<br>';
echo substr('abcdefg',5).'<br>';
echo substr('abcdefg',1,3).'<br>';
echo substr('abcdefg',-1).'<br>'; //从结尾开始第一个,向右 输出 所以是g
echo substr('abcdefg',-3).'<br>'; //从结尾开始第三个,向右 输出 所以是efg
echo substr('abcdefg',-3,2).'<br>';
str_split() 把字符串转为数组
可指定数组元素的宽度.不写参数,默认是1
print_r(str_split('hello,world!',1));
echo '<br>';
print_r(str_split('hello,world!',2));
echo '<br>';
print_r(str_split('hello,中华人民共和国',3));//UFT-8一个中文占三个字节
mb_strlen()函数返回字符串的长度
与strlen不同的时,它可以通过设置字符编码从而返回对应的字符数,很好的处理了中文字符串的长度问题。
echo mb_strlen("菜鸟教程RUNOOB").'<br>'; //返回10 一个中文占一个字节
// 使用strlen
echo strlen("菜鸟教程RUNOOB").'<br>'; //返回18,一个中文占3个字节
mb_substr()函数返回字符串的一部分,分割中文文字
substr()函数,它只针对英文字符,如果要分割的中文文字则需要使用mb_substr()echo mb_substr("菜鸟教程是个好教程",1,3);
str_getcsv() 函数解析 CSV 格式字段的字符串
并返回包含所读取字段的数组。
CSV 格式字段 : 北京,上海,天津,重庆。
一般用来读取文件,然后将文件内容放入数组。print_r(str_getcsv('北京,上海,天津,重庆'));
// file_get_contents() 函数把整个文件读入一个字符串中。
$csvStr= file_get_contents('text.txt');
//文件目录或名字不要用中文,用中文会出问题的
echo $csvStr;
字符串填充替换函数
str_pad() 把字符串填充为新的长度。
用法:str_pad(要填充的字符串,必选-新的字符串长度,可选-规定供填充使用的字符串,可选-规定填充字符串的哪边)
STR_PAD_BOTH - 填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。
STR_PAD_LEFT - 填充字符串的左侧。
STR_PAD_RIGHT - 填充字符串的右侧。默认。echo str_pad('hello',30,"-*-",STR_PAD_LEFT);
str_repeat()把字符串重复指定的次数
用法:str_repeat(必需-规定要重复的字符串,必需-规定字符串将被重复的次数。必须大于等于 0)echo str_repeat("上海,",5);
str_replace字符串替换
用法:
- 如果搜索的字符串是数组,那么它将返回数组。
- 如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
- 如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
- 如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。
- 区分大小写。 str_ireplace() 函数执行不区分大小写
echo str_replace('php','*','phpcn,phpchina,thinkphp',$count);
echo '<br>替换了'.$count.'次<br>';
$search=['广告','交友','棋牌','直销'];
echo str_replace($search,'***','最牛广告服务商,提供异性交友服务,棋牌游戏直销推广等');
echo '<br>';
echo str_replace($search,['++','@@','##','&&'],'最牛广告服务商,提供异性交友服务,棋牌游戏直销推广等');
trim()移除字符串两侧的字符
用法: - 如果不写第二个参数,就是去空白和其它预定义的
- ltrim() - 移除字符串左侧的空白字符或其他预定义字符
- rtrim() - 移除字符串右侧的空白字符或其他预定义字符
$str='3123fdsalkj958731';
echo trim($str);
echo '<br>';
echo trim($str,'31');
echo '<br>';
echo trim($str,'1..9'); //三个.也可以
echo '<br>';
echo trim($str,'1..4');
echo '<hr>';
strpos()查找字符串在另一字符串中第一次出现的位置
用法: - strpos(必需-规定要搜索的字符串,必需-规定要查找的字符串,可选-规定在何处开始搜索。)
- strpos() 函数查找字符串在另一字符串中第一次出现的位置。对大小写敏感。
- stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
- strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
- strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
echo strpos('hello,i am lilei!','am');
echo strpos('hello,i am lilei!','am',3);//从第3个位置查,第一次出现am 相对于整个字符串的位置
echo strpos('hello,i am lilei!','l'); //输出 2
echo strpos('hello,i am lilei!','l',5); //输出11
strstr()查找字符串在另一字符串中第一次出现的位置
用法: - 查找字符串在另一字符串中第一次出现的位置,并返回字符串的剩余部分 对大小写敏感
- strstr(必需-规定被搜索的字符串,必需-规定所搜索的字符串,可选-默认值为 “false” 的布尔值.)如果设置为 “true”,它将返回 search 参数第一次出现之前的字符串部分。
- 不区分大小写的搜索,请使用 stristr() 函数
echo strstr('images/banner.jpg','.'); //返回一个后缀
echo '<br>';
echo strstr('images/banner.jpg','.',true);
echo '<br>';
echo ltrim(strstr('admin@php.cn','@'),'@');//输出邮箱的域名
echo '<br>';
echo rtrim(strstr('admin@php.cn','@',true),'@');//输出邮箱的用户名
parse_str() 函数 把查询字符串解析到变量中
$str=$_SERVER['QUERY_STRING'];
parse_str($str,$a); //把查询字符串解析到变量中:
print_r($a);
parse_url() 分解出一个URL的各个部分
$arr=parse_url('http://php.edu/%E5%AD%97%E7%AC%A6%E4%B8%B2/URL%E5%A4%84%E7%90%86%E5%87%BD%E6%95%B0.php?id=5&name=haha');
print_r($arr);
echo '<br><br>';
print_r($arr['query']);
base64_encode 将二进制数据进行编码后进行传输
注意:中文目录下如果出现问题,改成英文数字目录就可$img=base64_encode(file_get_contents('girl.jpg')); //进行base64编码
echo $img;//输出编码内容
echo "<img src=\"data:image/jpeg;base64,{$img}\" width=\"200\">";//显示图片
file_put_contents("newgirl.jpg",base64_decode($img));//进行解码后,重新生成一张新图片
加密函数
echo md5('123456'); //32位
echo '<br>';
echo sha1('123456');//40位
echo '<br>';
echo md5(sha1('123456')); //32位
echo '<hr>';
$p='hello';
echo sha1('123456'.$p);//加上特殊指定字符串混合加密,更安全
md5_file()函数
要这个文件被更新过,那么他的返回值就会有变化 。比如用在用户上传中,比较已经存在的文件echo md5_file('test.php'); //显示一个文件的MD5
file_put_contents('test.txt',md5_file('test.php')); //将test.php的md5值生成一个test.txt文件
if (file_get_contents('test.txt')===md5_file('test.php')){
echo "文件没被修改过"; //修改test.txt里面的值就会提示被修改过
}
else{
echo "文件被修改过";
}
总结:
字符串有很多,学习难度不大,常见的要掌握。其它的可以熟悉,了解一下功能。遇到时候查查手册,加强记忆。