博客列表 >PHP字符串与字符串常用函数

PHP字符串与字符串常用函数

emagic
emagic原创
2020年07月18日 10:56:37846浏览

0709-作业

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

一、创建与定义字符串的四种方式

4.1 单引号’’来创建字符

  • 单引号中的变量不能解析

  • 可以用.来连接变量

  • 单引号中的特殊字符也不能被解析

  • 可以用转义字符’\’来输出特殊字符,\’,\

  1. <?php
  2. $str = 'string';
  3. //单引号中的变量不能被解析,单引号中的特殊字符也不能被解析
  4. echo '这是一个\n\r' . $str;
  5. echo '<hr>';
  6. echo '这是一个\'' . $str . '\'';

4.2 双引号””来创建字符

  • 双引号中的变量能解析

  • 为了开发时更加规范,变量要用{}括起来

  • 双引号可以解析特殊字符

  1. <?php
  2. $str = "string";
  3. echo "这是一个\n\r {$str}";
  4. echo '<hr>';
  5. echo "这是一个\"" . $str . "\"";

4.3 heredoc <<<可以看作是双引号的加强版

  • heredoc中的字符串不需要双引号定界符,适合写模板
  • <<< 界定名 …内容… 界定名
  • 界定名可以自定义
  1. <?php
  2. $str = "stringcode";
  3. echo <<< MANYCODE
  4. 这里面填充大量的文本 {$str} sdf \\n
  5. MANYCODE;

4.4 nowdoc:可以看作是单引号字符串的加强版

  • nowdoc 输出的内容不用单引号包住,但是界定符(第一个,结束的不用)要用单引号扩起来,否则默认会识别为heredoc双引号的格式。
  1. <?php
  2. $str = "stringcode";
  3. echo <<< 'MANYCODE'
  4. 这里面填充大量的文本 {$str} sdf \\n
  5. 但是同样无法翻译变量和特殊字符
  6. MANYCODE;

二 、字符串常用函数

1. printf()vprintf()

  • printf()按照指定的格式模板输出,语法:printf(‘模板’,将模板中的占位符替换)

  • vprintf()功能与printf()一样,只是参数不一样,后面传的是个数组

  1. <?php
  2. $str1 = 'admin';
  3. $str2 = '白金级';
  4. printf('欢迎%s登录,您的权限级别为%s。', $str1, $str2);
  5. echo '<hr>';
  6. vprintf('欢迎%s登录,您的权限级别为%s。', [$str1, $str2]);
  7. echo '<hr>';
  8. $table = 'users'; //表名
  9. $limit = 10; //返回条目
  10. vprintf('SELECT * FROM `%s` LIMIT %d', [$table, $limit]);
  11. //输出:SELECT * FROM `users` LIMIT 10

2. sprintf()vsprintf()

  • sprintf()返回格式化的字符串,与printf()类似,但不会输出(printf包含了输出),只返回格式化后的字符串

  • vsprintf()与sprintf()功能相同,区别在于后面变量使用数组。

  1. <?php
  2. $sql = sprintf('SELECT * FROM `%s` LIMIT %d', 'goods', 15);
  3. echo $sql;
  4. file_put_contents('temp.txt', $sql);
  5. echo '<hr>';
  6. $sql = vsprintf('SELECT * FROM `%s` LIMIT %d', ['goods', 20]);
  7. echo $sql;
  8. file_put_contents('temp.txt', $sql);
  • file_put_contents()是把一个字符串写入文件中。

3. implode()explode()把数组元素<->字符串之间组合和拆分转换

  • implode():将数组拼装成字符串, 同名函数叫join(),效果一模一样

  • explode():将字符串转为数组

  1. <?php
  2. $arr = ['星期一', '星期二', '星期三', '星期四', '星期五'];
  3. //将数组合为字符串,每个用“---”号分开
  4. echo implode('---', $arr) . "<hr>";
  5. print_r(explode(',', '大家好,今天是星期一,开例会'));

4. list()将索引数组中的元素解析到独立变量中

  • php要7.0以上
  1. <?php
  2. $arr = array('星期一', '星期二', '星期三', '星期四', '星期五');
  3. //将数组合为字符串,每个用“---”号分开
  4. list($a, $b, $c, $d, $e) = $arr;
  5. echo $c . $e;

5.substr()截取子字符串

  1. <?php
  2. //substr($string,$start,$length)
  3. echo substr('stringdemo', 0), '<hr>';
  4. echo substr('stringdemo', 2), '<hr>';
  5. echo substr('stringdemo', 2, 2), '<hr>';
  6. echo substr('stringdemo', -3, 3), '<hr>';

6.str_split()将字符串分割到数组中,可指定数组元素的宽度

  1. <?php
  2. print_r(str_split('examplestring', 2));

7.str_getcsv():解析 CSV 格式字段的字符串,并返回一个包含所读取字段的数组

  1. <?php
  2. $str = file_get_contents('test.csv');
  3. $arr = explode(",", $str);
  4. var_dump($arr);

8. str_pad():填充字符串到指定长度

  1. <?php
  2. $str = "yanshi";
  3. <?php
  4. $str = "yansh";
  5. echo str_pad($str, 10, "-", STR_PAD_LEFT), "<br>";
  6. echo str_pad($str, 10, "-", STR_PAD_RIGHT), "<br>";
  7. echo str_pad($str, 10, "-", STR_PAD_BOTH), "<br>";

  • 如果是奇数右边先分到

9.str_repeat()重复字符指定次数

  1. <?php
  2. echo str_repeat('(^_−)☆', 5);

10.str_replace()字符串替换

  • 语法:str_replace(find,replace,string,count)
  • count可以计算被替换了几次
  1. <?php
  2. $str = '白色的云朵,红色的花朵,白色的雪糕';
  3. echo str_replace('白色', '黑色', $str, $count), '<br>';
  4. echo "文档内容共替换了{$count}处", '<br>';
  5. // 示例:禁用违禁词
  6. $forbidden = ["抽奖", "性感", "约会"];
  7. echo str_replace($forbidden, '**', "大额抽奖必中彩,性感girl,约会联系信息"), '<br>';
  8. // 通过数组可以个性化替换
  9. echo str_replace($forbidden, ['***', '+++', '###'], "大额抽奖必中彩,性感girl,约会联系信息"), '<br>';

11.trim()从二端删除指定字符

  • 默认为删除空格,中间的不影响,两端匹配到的部分的才删
  1. <?php
  2. $str = ' this is a test ';
  3. echo trim($str);
  4. echo '<hr>';
  5. $str = '122331556@qq.com 案例 124854845912';
  6. echo $str, '<hr>';
  7. echo trim($str, '1..9'), '<hr>';

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

  1. <?php
  2. $str = 'this is my test';
  3. echo 's第一次出现的位置:' . strpos($str, 's');
  4. echo "<hr>";
  5. // 从指定位置开始查找
  6. echo '从索引为4开始查找i第一次出现的位置:' . strpos($str, 'i', 4);

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

  • 如果存在,返回该字符串及剩余部分,否则返回 FALSE。如果第三个参数设置为 "true",它将返回第一次出现之前的字符串部分
  1. <?php
  2. echo strstr('there is a test', 'r'), '<br>';
  3. echo strstr('there is a test', 'r', true);
  4. //如果设置为 "true",它将返回第一次出现之前的字符串部分

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
灭绝师太2020-07-18 15:33:061楼
总结的很全面,可以尝试使用字符串函数做一些简单的表单字段验证,比如,规定用户名长度只能是6-10字节,用strlen()去判断,等等!