博客列表 >字符串函数详解

字符串函数详解

lilove的博客
lilove的博客原创
2020年07月12日 22:56:06870浏览

字符串大小上限:2G

创建字符串有4种方式:

  1. 单引号

  2. 双引号

  3. heredoc

  4. nowdoc

示例:

  1. // 1.单引号
  2. $name = '小刚';
  3. $age = 18;
  4. // 单引号中不解析变量
  5. echo '$name$age岁了';
  6. // 可用拼接方式
  7. echo $name . $age . '岁了';
  8. // 在字符串中换行,单引号中不解析特殊字符
  9. echo 'This is a beautiful \n\r world!';
  10. // 字符串中多个单引号嵌套要用转义符"\"
  11. echo '世界真\'美\'啊!';
  12. // 或者用双引号嵌套
  13. echo '世界真"美"啊!';
  14. // 反斜线后面跟单引号要原样输出反斜线需要将反斜线转义
  15. echo '世界真美啊!\\';
  16. echo '<hr>';
  17. // 2.双引号
  18. echo "世界真'美'啊!";
  19. // 解析变量,变量间加个空格
  20. echo "$name $age 岁了";
  21. // 要将变量和其它字符串紧贴,用定界符{}
  22. echo "{$name}{$age}岁了";
  23. // 可以解析特殊字符,但html中将\n换行解析为空格
  24. echo "This is a beautiful \n\r world!";
  25. echo '<hr>';
  26. // 3.heredoc,有双引号的特点,适合htmlphp混编
  27. // 双引号默认可以不写
  28. // echo <<< "TITLE"
  29. echo <<< TITLE
  30. {$name}在php学习网站:php.cn学习php
  31. TITLE;
  32. // 4.nowdoc,有单引号的特点
  33. echo <<< 'TITLE'
  34. {$name}在php学习网站:php.cn学习php
  35. TITLE;

字符串输出函数

  • print_r()格式化输出结果

  • printf(‘模板’, 替换掉模板中的占位符)

printf('小刚今年%s岁', 18);

printf('%s今年%d岁', '小刚', 18);

  • 参数多了很麻烦,使用vprintf()

vprintf('%s今年%d岁', ['小刚', 18]);

  • sprintf():返回格式化字符串

echo sprintf('%s今年%d岁', '小刚', 18) . '<br>';

  • file_put_contents():将字符串写入文件中

file_put_contents('1.text', sprintf('%s今年%d岁', '小刚', 18));

  • vsprintf():功能与sprintf()相同,参数不同

file_put_contents('2.text', vsprintf('%s明年%d岁', ['小刚', 19]));


字符串分割查询与替换

示例1:

  1. // 1.数组拼装字符串
  2. $arr = [1, 2, 3, 4, 5];
  3. // 用*拼装数组
  4. echo implode('*', $arr), '<br>';
  5. // 用?拼装数组与implode()功能一样
  6. echo join('?', $arr), '<br>';
  7. // 2.字符串转为数组
  8. $str = 'class, grade, number';
  9. // 分隔符号一致的字符串转化,指定获取的字符串长度后的数据会在最后一个分割符号中全部包含
  10. // print_r(explode(', ', $str, 2));
  11. // echo '<hr>';
  12. // 如果要正确解析字符串指定长度用list()
  13. // 结构索引数组元素到变量中,list()不是函数,7.0+才能解析关联数组
  14. // 自动创建变量$class,$grade
  15. list($class, $grade) = explode(', ', $str, 3);
  16. echo "班级:{$class}, 年级:{$grade}", '<br>';
  17. // 3.字符串子串获取substr(字符串, 位置, 要获取的长度)
  18. // UTF-8中一个汉字为3个字节,所以取汉字要是3的整数倍,否则乱码
  19. echo substr('小刚今年18岁', 3, 9), '<br>';
  20. // 第二个参数为负数,是从倒数向后取,第三个参数也要符合汉字位数,8岁是4个字节
  21. echo substr('小刚今年18岁', -4, 4), '<br>';
  22. // 4.字符串转为数组并可指定数组元素:str_split(字符串, 获取的元素数量)
  23. $str1 = '小刚今年18岁';
  24. // 转为数组后中文有部分乱码,是因为18岁是5个字节不能被3整除
  25. print_r(str_split($str1, 3));
  26. // 这种情况需要扩展函数:mb_chr()等函数来解决,php版本7.0+
  27. echo '<hr>';
  28. // csv文件:纯文本存储表格数据,用分隔符分开
  29. // file_get_contents()获取文本文件内容
  30. $csv = file_get_contents('3.csv');
  31. echo $csv, '<br>';
  32. // 将读取的字符串转为数组
  33. print_r(explode(', ', $csv));

示例2:

  1. // 1.str_pad(string,length,pad_string,pad_type):把字符串填充为新的长度
  2. echo str_pad('小刚', 12, '帅', STR_PAD_LEFT), '<br>';
  3. echo str_pad('小刚', 12, '帅', STR_PAD_RIGHT), '<br>';
  4. echo str_pad('小刚', 12, '帅', STR_PAD_BOTH), '<br>';
  5. // 2.str_repeat():重复输出字符串
  6. echo str_repeat('小刚', 5), '<br>';
  7. // 3.str_replace()字符串替换
  8. echo str_replace('\\', '/', '\public\index.php'), '<br>';
  9. // 用于替换的目录分隔符根据操作系统自动适应:DIRECTORY_SEPARATOR
  10. echo str_replace('\\', DIRECTORY_SEPARATOR, '\public\index.php'), '<br>';
  11. // 查询字符串被替换的次数
  12. echo str_replace('\\', DIRECTORY_SEPARATOR, '\public\index.php', $count), '<br>';
  13. echo $count, '<br>';
  14. // 例如需要屏蔽某些非法词语
  15. $notAllow = ['政治', '广告', '直播', '非法'];
  16. // 含有非法词语的字符串都被替换成*
  17. echo str_replace($notAllow, '*', '政治难题, 非法交友, 直播陪聊, 广告推广'), '<br>';
  18. // 个性化替换
  19. echo str_replace($notAllow, ['*', '-', '+', '^'], '政治难题, 非法交友, 直播陪聊, 广告推广'), '<br>';
  20. // 3.trim():从两边删除指定字符,例如用户提交的账号密码
  21. // ltrim()只去除左边的,rtrim()只去除右边的
  22. $user = ' admin ';
  23. $pwd = ' pwd ';
  24. echo '用户名:' . $user . '密码:' . $pwd, '<br>';
  25. // 去除两边的空格
  26. echo '用户名:' . trim($user) . '密码:' . trim($pwd), '<br>';
  27. // 过滤两边的指定字符
  28. $userid = '18a';
  29. echo trim($userid, 'a'), '<br>';
  30. // 去除1到9之间数字
  31. echo trim($userid, '1..9'), '<br>';
  32. echo trim($userid, '1...9'), '<br>';
  33. // 4.strpos():字符串在另一字符串中首次出现的位置
  34. $str = '小刚今年18岁';
  35. echo strpos($str, '今'), '<br>';
  36. // 从指定位置开始查询
  37. echo strpos($str, '1', 9), '<br>';
  38. // 5.strstr():搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回 FALSE
  39. $name = '小刚拉斯托弗六笔司机6666666';
  40. $file = '\public\images\1.jpg';
  41. $email = 'admin@163.com';
  42. echo strstr($name, '六'), '<br>';
  43. echo strstr($file, '.'), '<br>';
  44. // 第三个参数为true的时候返回指定字符前的字符串(默认为false)
  45. echo strstr($email, '@', true), '<br>';

总结

  • 字符串特殊字符输出要转义

  • 字符串紧贴用定界符{}

  • 掌握输出的各种方式及特点

  • 掌握字符串分割、替换、拼装

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