博客列表 >字符串与字符串函数

字符串与字符串函数

Lin__
Lin__原创
2020年04月24日 08:26:07671浏览

字符串的声明

  • 单引号

字符串定界符,不解析变量。\符号在单引号中只能转义单引号和它自身,而不能解析特殊字符,如“\n,\r”,在单引号中使用双引号不用进行转义

示例:

  1. <?php
  2. $str='这是一个字符串';
  3. //字符串中包含变量
  4. echo '字符串中包含变量:{$str}<hr />';
  5. //字符串中包含单引号和“\”符号
  6. echo '字符串中包含单引号和反斜杠:\' \\<hr />';
  7. //字符串中转义特殊字符
  8. echo '字符串中转义特殊字符:\n\r<hr />';
  9. //在单引号中使用双引号
  10. echo '在单引号中使用双引号:"Hello World"';


当使用单引号进行字符串声明的时候,其中如果包含变量和转义特殊字符,不会去解析变量中的值以及特殊字符的含义,只会原样输出;如果在单引号中直接使用单引号和\,会出现错误,必须使用\进行转义

  • 双引号

字符串定界符,解析变量,\符号在双引号中不仅可以转义自身和双引号,还可以转义特殊字符,如“\n,\r”,双引号中使用单引号不用进行转义

示例:

  1. <?php
  2. $str="这是一个字符串";
  3. //字符串中包含变量
  4. echo "字符串中包含变量-变量后继续跟着英文字符,未使用变量定界符:$string<hr />";
  5. echo "字符串中包含变量-变量后继续跟着英文字符,使用变量定界符包裹整个变量:{$str}ing<hr />";
  6. echo "字符串中包含变量变量后继续跟着英文字符,使用变量定界符只包裹变量名:${str}ing<hr />";
  7. //字符串中包含双引号和“\”符号
  8. echo "字符串中包含单引号和反斜杠:\" \\<hr />";
  9. //字符串中转义特殊字符
  10. echo "字符串中转义特殊字符:\n\r$str<hr />";
  11. //在双引号中使用单引号
  12. echo "在双引号中使用单引号:'Hello World'";

在解析变量时,如果变量名称的后边有有影响变量解析的字符串,如英文字符,则需要使用变量定界符{}进行包裹,否则会因为改变变量名而导致解析失败,变量定界符可以包裹整个变量,也可以只包裹变量名。有些特殊字符无法直接在浏览器看到效果,可以在浏览器中右击选择查看源代码,进行最终的效果查看

  • heredoc

定义字符串,功能类似双引号,中间可以是字符串,也可以是HTML代码

语法:

  1. <?php
  2. echo <<<"EOF"
  3. 字符串或代码块
  4. EOF;

<<<"EOF"开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号,双引号可以省略不写;开始标记和结束标记相同,比如常用大写的 EOTEODEOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可;位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 .,来拼接

示例:

  1. <?php
  2. //输出字符串
  3. echo <<<STRING
  4. 这只是一个普通的字符串<hr />
  5. STRING;
  6. //输出包含变量和双引号、反斜杠
  7. $str = "这是一个字符串变量";
  8. echo <<<TEST2
  9. $str'"\<hr />
  10. TEST2;
  11. //输出数组元素
  12. $arr = ['name'=>'Lin','age'=>26];
  13. echo <<<ARR
  14. 这是一个数组元素{$arr['name']}<hr />
  15. ARR;
  16. //传统方式输出html文档
  17. $str='这是传统方式输出html文档';
  18. echo '<!DOCTYPE html>';
  19. echo '<html>';
  20. echo '<head><title></title></head>';
  21. echo '<body>'.$str.'</body>';
  22. echo '</html>';
  23. echo '<hr />';
  24. //heredoc输出HTML
  25. $str='这是heredoc输出html文档';
  26. echo <<<EOF
  27. <!DOCTYPE html>
  28. <html>
  29. <head>
  30. <title></title>
  31. </head>
  32. <body>$str</body>
  33. </html>
  34. EOF;



在输出包含大量HTML语法文档的时候,虽然使用传统方式与使用heredoc结果相同,使用heredoc代码更加的简单和易于阅读

  • nowdoc

定义字符串,功能类似单引号引号,中间可以是字符串,也可以是HTML代码

语法:

  1. echo <<<'EOF'
  2. 字符串或代码块
  3. EOF;

语法与heredoc相同,但开始标记使用的是单引号,且不可省略。在输出HTML代码时,如果没有包含要解析的变量或者是特殊字符,可以使用nowdoc,否则建议使用heredoc

  1. <?php
  2. //输出字符串
  3. echo <<<'STRING'
  4. 这只是一个普通的字符串<hr />
  5. STRING;
  6. //输出包含变量和双引号、反斜杠
  7. $str = "这是一个字符串变量";
  8. echo <<<'TEST2'
  9. $str'"\<hr />
  10. TEST2;
  11. //输出数组元素
  12. $arr = ['name'=>'Lin','age'=>26];
  13. echo <<<'ARR'
  14. 这是一个数组元素{$arr['name']}<hr />
  15. ARR;
  16. //传统方式输出html文档
  17. $str='这是传统方式输出html文档';
  18. echo '<!DOCTYPE html>';
  19. echo '<html>';
  20. echo '<head><title></title></head>';
  21. echo '<body>'.$str.'</body>';
  22. echo '</html>';
  23. echo '<hr />';
  24. //nowdoc输出HTML
  25. $str='这是nowdoc输出html文档';
  26. echo <<<'EOF'
  27. <!DOCTYPE html>
  28. <html>
  29. <head>
  30. <title></title>
  31. </head>
  32. <body>$str</body>
  33. </html>
  34. EOF;


部分字符串函数

  • html_entity_decode,把HTML代码转为字符,返回的是一个字符串

语法:

  1. html_entity_decode(要操作的字符串,[对单双引号的编码方式,转换时使用的字符集]);

对单双引号的编码方式

名称 描述
ENT_COMPAT 只解码码双引号,当该参数没有写时,这个是默认值
ENT_QUOTES 解码双引号和单引号
ENT_NOQUOTES 不解码双引号和单引号

转换时常用的字符集

名称 描述
ISO-8859-1 西欧,Latin-1,默认值
UTF-8 ASCII兼容多字节8比特Unicode
GB2312 简体中文

如果有无法识别的字符集,则会使用默认的值;如果该参数忽略不写,则也使用默认值

示例:

  1. <?php
  2. $str="PHP &amp; &#039;Hello World~&#039";
  3. //只填写一个参数时,默认只解码双引号,使用的字符集为ISO-8859-1
  4. echo html_entity_decode($str)."\r\n";
  5. //解码双引号与单引号
  6. echo html_entity_decode($str,ENT_QUOTES,'UTF-8')."\r\n";
  7. //不解码双引号和单引号
  8. echo html_entity_decode($str,ENT_NOQUOTES,'UTF-8')."\r\n";

  • strtolower,将字符串中所有的字母全部转为小写,返回的是一个字符串

语法:

  1. strtolower(要操作的字符);

示例:

  1. <?php
  2. $str='ABCDEFG';
  3. echo strtolower($str);

  • strtoupper,将字符串中所有的字母全部转为大写,返回的是一个字符串

语法:

  1. strtoupper(要操作的字符);

示例:

  1. <?php
  2. $str='abcdefg';
  3. echo strtoupper($str);

  • str_shuffie,将字符串中的字符顺序随机打乱,返回的是一个字符串

语法:

  1. str_shuffle(要操作的字符串);

示例:

  1. $str='Hello World';
  2. echo str_shuffle($str);

  • strrev,将字符倒序反转,即第一个字符变成最后一个,第二个字符变成倒数第二个,以此类推

语法:

  1. strrev(要操作的字符串);

示例:

  1. $str='Hello World';
  2. echo strrev($str);

  • substr,截取字符串,返回被截取的子串

语法:

  1. substr(被操作的字符串,[开始的位置,截取的长度]);

字符串的索引,正序从0开始,倒序从-1开始。开始的位置可省略,如果省略不写,默认从0(即字符串的第一个位置)开始。截取的长度也可省略,如果省略不写,则默认截取到字符串的结尾

示例:

  1. <?php
  2. $str='abcdefg';
  3. //从第一个字符开始一直到最后一个字符,返回的还是原来完整的字符不变
  4. echo substr($str,0).'<hr />';
  5. //只给定前两个参数,从c开始截取,一直到字符串结尾最后一个字符
  6. echo substr($str,2).'<hr />';
  7. //按照正序的位置开始截取,从c开始截取,共截取两个字符(返回的子串只有两个字符)
  8. echo substr($str,2,2).'<hr />';
  9. //按照倒序的位置开始截取,从d开始截取,共截取4个字符(返回的子串只有4个字符)
  10. echo substr($str,-4,3).'<hr />';

  • substr_count,统计在字符串中某个子串出现的次数

语法:

  1. substr_count(被操作的字符串,要查询的子串,[开始的位置,查询的长度]);

字符串的索引,正序从0开始,倒序从-1开始。开始的位置可省略,如果省略不写,默认从0(即字符串的第一个位置)开始。查询的长度也可省略,如果省略不写,则默认查询到字符串的结尾

示例:

  1. <?php
  2. $str1="I study programming in PHP Chinese net";
  3. $str2="i";
  4. //不限定开始的位置和查询的长度
  5. echo substr_count($str1,$str2).'<hr />';
  6. //限定开始的位置,不限定查询的长度
  7. echo substr_count($str1,$str2,3).'<hr />';
  8. //从正序的位置开始查找
  9. echo substr_count($str1,$str2,2,10).'<hr />';
  10. //从倒序的位置开始查找
  11. echo substr_count($str1,$str2,-8,7).'<hr />';

  • str_split,将字符串拆分为数组,并指定每个元素包含的字符个数,返回的是数组

语法:

  1. str_split(要操作的字符串,[每个元素包含的字符个数]);

不设置字符个数时,默认一个字符一个元素

示例:

  1. <?php
  2. $str='php.cn';
  3. //不设置字符个数时
  4. var_dump(str_split($str));
  5. echo '<hr />';
  6. //设置字符个数时
  7. var_dump(str_split($str,2));

  • str_getcsv,操作csv格式的字符串,返回结果为数组

语法:

  1. str_getcsv(要操作的CSV格式的字符串);

示例:

  1. <?php
  2. var_dump(str_getcsv('1,Lin,26'));

  • str_pad,将字符串填充到指定长度

语法:

  1. str_pad(要操作的字符,要扩充到的长度,用于填充的字符串,填充的位置);

比如设置的长度为10,而字符串本身的长度只有3,那么会使用用于填充的子串将原本的字符串长度填充增加至10

填充的位置有三个:STR_PAD_LEFT,填充在字符串的左边;STR_PAD_RIGHT,填充在字符串的右边;STR_PAD_BOTH,填充在字符串的两边,左右字符的个数会平均分配

示例:

  1. <?php
  2. $str="abc";
  3. $str2="*";
  4. //填充在字符串的左边
  5. echo str_pad($str,10,$str2,STR_PAD_LEFT).'<hr />';
  6. //填充在字符串的右边
  7. echo str_pad($str,10,$str2,STR_PAD_RIGHT).'<hr />';
  8. //填充在字符串的两边
  9. echo str_pad($str,10,$str2,STR_PAD_BOTH).'<hr />';

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议