Blogger Information
Blog 63
fans 8
comment 8
visits 50131
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP大牛成长之路:字符串的四种创建方式与常用函数
周Sir-BLOG
Original
739 people have browsed it

1、字符串的定义

1.1、定义单引号字符串

  • 从上图可以看出:单引号字符串的变量不能被解析;

  • 从上图可以看出:转义字符空格&nbsp可以被解析

  • 从上图可以看出:转义字符回车换行\r\n不能被解析

  • 从上图可以看出:在单引号的字符串不可以使用单引号(语法错误)

  • 如果想在字符串输出特殊字符,需要使用转义符: \

1.2、定义双引号字符串

  • 从上图可以看出:双引号中的变量可以被解析

  • 为了规范,建议在变量中加上大括号{}

  1. $str = '我是变量字符串';
  2. echo "ABCDEFG{$str}";

  • 从上图可以看出:转义字符回车换行\r\n不能被解析(需在源码中查看)

1.3、使用heredoc定义字符串

可以看作是双引号字符串的Plus+,个人理解为多行的双引号字符串。(PHP4.0+)

  • 1.标识符可以自定义 一般的 有EOT ,EOD EOF 等, 只有保持开始表示符和结束表示符一样即可(实际标识符默认是双引号,可以省略不写。);

  • 2.结束表示符必须独占一行,且必须顶格写,不能有空格,最后以 ‘;’ 分号结尾;

  • 3.所有引用的字符串中可以包含变量,无需字符串连接符。

  • 从上图可以看出:heredoc中可以html+php混编,非常适合模板的编写

1.4、使用nowdoc定义字符串

可以看作是单引号字符串的Plus+,个人理解为多行的单引号字符串。(PHP5.3+)

  • nowdoc语法与heredoc相同,唯一区别标识符需要加上单引号;

注:字符串大小的上限: 2G

2、字符串常用函数

2.1 printf()输出格式化的字符串;

  1. $str1='中国人';
  2. $str2='骄傲';
  3. printf('我是一名%s,我很%s。',$str1,$str2);
  4. //输出:我是一名中国人,我很骄傲。
  1. // 比如sql语句:
  2. $table='users'; //表名
  3. $limit=10; //返回条目
  4. printf('SELECT * FROM `%s` LIMIT %d', $table, $limit);
  5. //输出:SELECT * FROM `users` LIMIT 10
  • % 符号代表的值:
No % 符号 说明
1 %% 返回一个百分号 %
2 %b 二进制数
3 %c ASCII 值对应的字符
4 %d 包含正负号的十进制数(负数、0、正数)
5 %e 使用小写的科学计数法(例如 1.2e+2)
6 %E 使用大写的科学计数法(例如 1.2E+2)
7 %u 不包含正负号的十进制数(大于等于 0)
8 %f 浮点数(本地设置)
9 %F 浮点数(非本地设置)
10 %g 较短的 %e 和 %f
11 %G 较短的 %E 和 %f
12 %o 八进制数
13 %s 字符串
14 %x 十六进制数(小写字母)
15 %X 十六进制数(大写字母)

2.2 vprintf()输出格式化的字符串(与printf()功能相同,区别在于后面变量使用数组。);

  1. $table='users'; //表名
  2. $limit=10; //返回条目
  3. vprintf('SELECT * FROM `%s` LIMIT %d', [$table, $limit]);
  4. //输出:SELECT * FROM `users` LIMIT 10

2.3 sprintf()返回格式化的字符串(与printf()类似,不输出,返回格式化后的字符串)

  1. $table='users'; //表名
  2. $limit=10; //返回条目
  3. $sql = sprintf('SELECT * FROM `%s` LIMIT %d', $table, $limit);
  4. //输出:SELECT * FROM `users` LIMIT 10

2.4 vsprintf()返回格式化的字符串(与与sprintf()功能相同,区别在于后面变量使用数组。);

  1. $table='users'; //表名
  2. $limit=10; //返回条目
  3. $sql = sprintf('SELECT * FROM `%s` LIMIT %d', [$table, $limit]);
  4. //输出:SELECT * FROM `users` LIMIT 10

2.5 file_put_contents()把一个字符串写入文件中。

  1. // file_put_contents(文件,数据,如何打开/写入文件,规定文件句柄的环境)
  2. echo file_put_contents("sites.txt","我"); //默认覆盖写入,返回字符长度
  3. // 使用 FILE_APPEND 标记,可以在文件末尾追加内容
  4. // LOCK_EX 标记可以防止多人同时写入
  5. echo file_put_contents("sites.txt","要学习", FILE_APPEND | LOCK_EX);

2.6 implode() join() 把数组元素组合为一个字符串

  1. $arr=['学生1','学生2','学生3','学生4','学生5','学生6'];
  2. //将数组合为字符串,每个用“|”号分开
  3. echo implode('|', $arr);
  4. echo '<br>';
  5. echo join('|', $arr);
  6. // 输出:
  7. //学生1|学生2|学生3|学生4|学生5|学生6
  8. //学生1|学生2|学生3|学生4|学生5|学生6
  9. //两个函数输出结果相同

2.7 explode()字符串打散为数组

  1. // explode(在哪里分割字符串,要分割的字符串,返回的数组元素的数量)
  2. print_r(explode('|','学生1|学生2|学生3|学生4|学生5|学生6'));
  3. // 返回数组:Array ( [0] => 学生1 [1] => 学生2 [2] => 学生3 [3] => 学生4 [4] => 学生5 [5] => 学生6 )

2.8 substr()返回字符串的一部分

  • 语法:substr($string, $start, $length)
  1. echo substr('ABCDEFG', 0), '<br>'; //输出全部
  2. echo substr('ABCDEFG', 1), '<br>'; //输出BCDEFG
  3. echo substr('ABCDEFG', 3), '<br>'; //输出DEFG
  4. echo substr('ABCDEFG', 3,2), '<br>'; //输出DE(第3位开始取两位)
  5. //注意:UTF8 中文1个字为3个字节
  6. echo substr('我要学习', 3), '<br>'; //输出要学习

2.9 str_split()把字符串分割到数组中

  • 不写分割长度默认是 1
  1. print_r(str_split('ABCDEF'));
  2. // 输出:Array ( [0] => A [1] => B [2] => C [3] => D [4] => E [5] => F )
  3. print_r(str_split('ABCDEF', 2));
  4. // 输出:Array ( [0] => AB [1] => CD [2] => EF )

2.10 str_getcsv()解析 CSV 格式字段的字符串,并返回包含所读取字段的数组。

print_r(str_getcsv('2,小美,18,xiaomei@php.cn'));

  • 输出:Array ( [0] => 2 [1] => 小美 [2] => 18 [3] => xiaomei@php.cn )

2.11 file_get_contents()整个文件读入一个字符串中。

  • 示例:(csv文件结构如下)
  1. id,name,age,email
  2. 1,小米,22,xiaomi@php.cn
  3. 2,小美,18,xiaomei@php.cn
  4. 3,小明,26,xiaomin@php.cn
  1. $csvStr = file_get_contents('data.csv');
  2. echo $csvStr;
  3. // 输出:id,name,age,email 1,小米,22,xiaomi@php.cn 2,小美,18,xiaomei@php.cn 3,小明,26,xiaomin@php.cn
  4. //字符串打散为数组
  5. $csvArr = explode(",", $csvStr);
  6. print_r($csvArr);
  7. //输出结果如下:

2.12 str_pad()把字符串填充为新的长度。

  1. $str = "字符";
  2. //字符不满10位在前面用“-”补齐
  3. echo str_pad($str,10,"-",STR_PAD_LEFT),'<br>';
  4. //输出:----字符
  5. //字符不满10位在后面用“-”补齐
  6. echo str_pad($str,10,"-",STR_PAD_RIGHT ),'<br>';
  7. //输出:字符----
  8. //字符不满10位在两边用“-”补齐
  9. echo str_pad($str,10,"-",STR_PAD_BOTH ),'<br>';
  10. //输出:---字符--

2.13 str_replace()字符串替换

  1. $css_pach='myapp/php_pro/css/style.css';
  2. // 将以上CSS路径地址中的“/”替换“//”,并自动创建变量$i统计替换次数
  3. echo str_replace('/', '//',$css_pach,$i);
  4. echo '<br>查找并替换了:'.$i.'次';
  5. // 输出:myapp//php_pro//css//style.css
  6. // 查找并替换了:3次
  1. // 字符串替换应用场景2
  2. $str_key = ['交友', '广告', '直播', '带货'];
  3. //find 查找的值支持数组
  4. echo str_replace($str_key, '**', '广告代理, 直播教学, 免费带货,异性交友');
  5. // 输出:**代理, **教学, 免费**,异性**

2.14 trim()移除字符串两侧的空白字符或其他预定义字符。

  1. $str = "...admin ";
  2. echo $str;
  3. // 原始输出:...admin
  4. echo "<br>";
  5. echo trim($str, ".");
  6. // 移除后输出:admin
  • 类似函数
  • ltrim() 函数 移除字符串左侧的空白字符或其他预定义字符。
  • rtrim() 函数 移除字符串右侧的空白字符或其他预定义字符。

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

  1. $str1='hello php.cn';
  2. $str2='php';
  3. echo strpos($str1, $str2);
  4. // 输出:6

2.16 strstr()搜索字符串在另一字符串中是否存在

  • 如果存在,返回该字符串及剩余部分,否则返回 FALSE。

  1. echo strstr('admin@php.cn','@');
  2. // 输出:@php.cn
  3. echo (strstr('admin@php.cn','@')) ? '存在' : '不存在' ;
  4. // 输出:存在
  5. echo (strstr('admin@php.cn','#')) ? '存在' : '不存在' ;
  6. // 输出:不存在

总结

  • 了解了字符串的四种创建方式和使用方法
  • 系统字符串函数逐个测试、学习,用法基本掌握,项目中灵活应用还需要实战加强。
Correcting teacher:GuanhuiGuanhui

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