博客列表 >PHP大牛成长之路:字符串的四种创建方式与常用函数

PHP大牛成长之路:字符串的四种创建方式与常用函数

周Sir-BLOG
周Sir-BLOG原创
2020年07月12日 12:36:29737浏览

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. // 输出:不存在

总结

  • 了解了字符串的四种创建方式和使用方法
  • 系统字符串函数逐个测试、学习,用法基本掌握,项目中灵活应用还需要实战加强。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议