Blogger Information
Blog 24
fans 4
comment 0
visits 20120
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
字符串与字符串函数
Lin__
Original
672 people have browsed it

字符串的声明

  • 单引号

字符串定界符,不解析变量。\符号在单引号中只能转义单引号和它自身,而不能解析特殊字符,如“\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 />';

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:尽可能选一些咱们课上没讲过的函数做
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post