博客列表 >PHP字符串的创建方式及常用字符串函数

PHP字符串的创建方式及常用字符串函数

知行合一
知行合一原创
2020年07月19日 09:23:091353浏览

字符串的创建方式


1.单引号创建

单引号中的变量不能被解析,想要被解析要用字符串拼接的方式

  1. $str='hello world!';
  2. echo '小明$str';
  3. echo '<br>';
  4. echo '小明'.$str; //字符串拼接


单引号的特殊字符不能被解析出来

  1. echo 'hello,china \n\r haha';
  2. echo '<br>';


在单引号中又出现单引号 需要用\进行转义
字符串中的单引号有两重意义,定界符和单引号。
echo 'hello,\'china\'';
如果想在字符串中输入\,则也输入两个\第一个是转义
echo 'hello,\\china\\';

2.双引号创建

双引号中的变量可以被解析出来
echo "小明$str 是个好学生"; //变量后面必须有空格

将变量和其后面字符连接起来,给变量加个大括号{},或者只给$后面的标识加上也可。

  1. echo "小明 {$str}真是个好学生";
  2. echo '<br>';
  3. echo "小明 ${str}真是个好学生";


双引号能解析回车换行,回车换行在浏览器中被解析成单个空格
echo "hello,china \n\r haha";

双引号中可以转义特殊字符

  1. echo "hello,\"china\"";
  2. echo '<br>';
  3. echo "hello,\\china\\";

3.heredoc创建 可以看到是双引号的升级版

  • heredoc中的字符串不需要双引号定界符
  • 非常适合HTML+PHP编写模板
  • 标识可以自己定义,开始和结束的必须一致,不区分大小写。
  • 开始的可以加上引号,也可不加,后面不能有空格。
  • 结尾的最好顶着开头写。
    1. $str="北京";
    2. echo <<< Hi
    3. hello,<span style="color:red">$str</span>
    4. Hi;

    4.nowdoc 可以看到是单引号的升级版

    起始必须加上单引号。适合书写大量的文本内容
    1. echo <<< 'NOW'
    2. hello,<span style="color:red">上海</span>
    3. NOW;

字符串打印输出函数

printf将输出的字符串按指定的格式输出

  • 格式 printf(‘模板’,替换掉模板中的占位符)
  • 如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 “\$” 组成
    1. printf('%s的体重是%d公斤','小明','40');
    2. printf('%1$s的体重是%2$d公斤,但是%1$s偏重','小明','40');

    vprintf() 中的参数位于数组中,与 printf() 不同。

    数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。
    1. vprintf('%s的体重是%d公斤',['小红','30']);
    2. echo '<br>';
    3. vprintf('%1$s的体重是%2$d公斤,但是%1$s偏重',['小红','30']);

    sprintf() 格式化字符,是返回,但是不输出

    1. echo sprintf('%s的体重是%d公斤','小刚','50');
    2. //用echo 来显示

vsprintf() 格式化字符,是返回,但是不输出,参数位于数组中

  1. echo vsprintf('%1$s的体重是%2$d公斤,但是%1$s偏重',['小强','60']);


字符串分割查询函数

implode(): 将数组组装成一个字符串

也可以用join() 意义一样

  1. $arr=['北京','上海','广州','深圳'];
  2. echo implode('-',$arr).'<br>';//第一个参数是分割符

explode();字符串组装成数组

explode(分隔符,字符串,数量)

  1. $str='apple,orange,banner,pear';
  2. print_r (explode(',',$str));

  1. print_r (explode(',',$str,2)); //

  1. list($fruit1,$fruit2,$fruit3)=explode(',',$str);
  2. echo '<br>';
  3. echo $fruit1,$fruit2,$fruit3;

  1. //list()用于在一次操作中给各个变量赋值。
  2. list($a,$b)=[100,200];
  3. echo $a,$b;
  4. //输出 100 200

substr()分割函数

  1. echo substr('abcdefg',0).'<br>';
  2. echo substr('abcdefg',5).'<br>';
  3. echo substr('abcdefg',1,3).'<br>';
  4. echo substr('abcdefg',-1).'<br>'; //从结尾开始第一个,向右 输出 所以是g
  5. echo substr('abcdefg',-3).'<br>'; //从结尾开始第三个,向右 输出 所以是efg
  6. echo substr('abcdefg',-3,2).'<br>';

str_split() 把字符串转为数组

可指定数组元素的宽度.不写参数,默认是1

  1. print_r(str_split('hello,world!',1));
  2. echo '<br>';
  3. print_r(str_split('hello,world!',2));
  4. echo '<br>';
  5. print_r(str_split('hello,中华人民共和国',3));//UFT-8一个中文占三个字节

mb_strlen()函数返回字符串的长度

与strlen不同的时,它可以通过设置字符编码从而返回对应的字符数,很好的处理了中文字符串的长度问题。

  1. echo mb_strlen("菜鸟教程RUNOOB").'<br>'; //返回10 一个中文占一个字节
  2. // 使用strlen
  3. echo strlen("菜鸟教程RUNOOB").'<br>'; //返回18,一个中文占3个字节

mb_substr()函数返回字符串的一部分,分割中文文字

substr()函数,它只针对英文字符,如果要分割的中文文字则需要使用mb_substr()
echo mb_substr("菜鸟教程是个好教程",1,3);

str_getcsv() 函数解析 CSV 格式字段的字符串

并返回包含所读取字段的数组。
CSV 格式字段 : 北京,上海,天津,重庆。
一般用来读取文件,然后将文件内容放入数组。
print_r(str_getcsv('北京,上海,天津,重庆'));

  1. // file_get_contents() 函数把整个文件读入一个字符串中。
  2. $csvStr= file_get_contents('text.txt');
  3. //文件目录或名字不要用中文,用中文会出问题的
  4. 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() 函数执行不区分大小写
    1. echo str_replace('php','*','phpcn,phpchina,thinkphp',$count);
    2. echo '<br>替换了'.$count.'次<br>';
    1. $search=['广告','交友','棋牌','直销'];
    2. echo str_replace($search,'***','最牛广告服务商,提供异性交友服务,棋牌游戏直销推广等');
    3. echo '<br>';
    4. echo str_replace($search,['++','@@','##','&&'],'最牛广告服务商,提供异性交友服务,棋牌游戏直销推广等');

    trim()移除字符串两侧的字符

    用法:
  • 如果不写第二个参数,就是去空白和其它预定义的
  • ltrim() - 移除字符串左侧的空白字符或其他预定义字符
  • rtrim() - 移除字符串右侧的空白字符或其他预定义字符
    1. $str='3123fdsalkj958731';
    2. echo trim($str);
    3. echo '<br>';
    4. echo trim($str,'31');
    5. echo '<br>';
    6. echo trim($str,'1..9'); //三个.也可以
    7. echo '<br>';
    8. echo trim($str,'1..4');
    9. echo '<hr>';

    strpos()查找字符串在另一字符串中第一次出现的位置

    用法:
  • strpos(必需-规定要搜索的字符串,必需-规定要查找的字符串,可选-规定在何处开始搜索。)
  • strpos() 函数查找字符串在另一字符串中第一次出现的位置。对大小写敏感。
  • stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
  • strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
  • strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
    1. echo strpos('hello,i am lilei!','am');
    2. echo strpos('hello,i am lilei!','am',3);//从第3个位置查,第一次出现am 相对于整个字符串的位置
    3. echo strpos('hello,i am lilei!','l'); //输出 2
    4. echo strpos('hello,i am lilei!','l',5); //输出11

    strstr()查找字符串在另一字符串中第一次出现的位置

    用法:
  • 查找字符串在另一字符串中第一次出现的位置,并返回字符串的剩余部分 对大小写敏感
  • strstr(必需-规定被搜索的字符串,必需-规定所搜索的字符串,可选-默认值为 “false” 的布尔值.)如果设置为 “true”,它将返回 search 参数第一次出现之前的字符串部分。
  • 不区分大小写的搜索,请使用 stristr() 函数
    1. echo strstr('images/banner.jpg','.'); //返回一个后缀
    2. echo '<br>';
    3. echo strstr('images/banner.jpg','.',true);
    4. echo '<br>';
    5. echo ltrim(strstr('admin@php.cn','@'),'@');//输出邮箱的域名
    6. echo '<br>';
    7. echo rtrim(strstr('admin@php.cn','@',true),'@');//输出邮箱的用户名

    parse_str() 函数 把查询字符串解析到变量中

    1. $str=$_SERVER['QUERY_STRING'];
    2. parse_str($str,$a); //把查询字符串解析到变量中:
    3. print_r($a);

    parse_url() 分解出一个URL的各个部分

    1. $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');
    2. print_r($arr);
    3. echo '<br><br>';
    4. print_r($arr['query']);

    base64_encode 将二进制数据进行编码后进行传输

    注意:中文目录下如果出现问题,改成英文数字目录就可
    1. $img=base64_encode(file_get_contents('girl.jpg')); //进行base64编码
    2. echo $img;//输出编码内容
    3. echo "<img src=\"data:image/jpeg;base64,{$img}\" width=\"200\">";//显示图片
    4. file_put_contents("newgirl.jpg",base64_decode($img));//进行解码后,重新生成一张新图片

    加密函数

    1. echo md5('123456'); //32位
    2. echo '<br>';
    3. echo sha1('123456');//40位
    4. echo '<br>';
    5. echo md5(sha1('123456')); //32位
    6. echo '<hr>';
    7. $p='hello';
    8. echo sha1('123456'.$p);//加上特殊指定字符串混合加密,更安全

    md5_file()函数

    要这个文件被更新过,那么他的返回值就会有变化 。比如用在用户上传中,比较已经存在的文件
    1. echo md5_file('test.php'); //显示一个文件的MD5
    2. file_put_contents('test.txt',md5_file('test.php')); //将test.php的md5值生成一个test.txt文件
    3. if (file_get_contents('test.txt')===md5_file('test.php')){
    4. echo "文件没被修改过"; //修改test.txt里面的值就会提示被修改过
    5. }
    6. else{
    7. echo "文件被修改过";
    8. }

总结:

字符串有很多,学习难度不大,常见的要掌握。其它的可以熟悉,了解一下功能。遇到时候查查手册,加强记忆。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
灭绝师太2020-07-17 17:07:361楼
对,常用的字符串函数要熟悉,不懂得时候看手册,没必要全部熟记!字符串函数常用语过滤,检测表单字段用户输入的数据。