Blogger Information
Blog 100
fans 8
comment 2
visits 150172
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
字符串函数详解
lilove的博客
Original
874 people have browsed it

字符串大小上限: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>';

总结

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

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

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

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

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