1. strlen()函数

  • 作用:获取字符串的长度
  • 参数:string 类型的字符串
  • 返回值:成功则返回字符串 string 的长度;如果 string 为空,则返回 0。 ```php <?php $str1 = “Hello World!”; $str2 = “向上”;

echo strlen($str1) . ‘
‘; // 12 echo strlen($str2) . ‘
‘; // 6

  1. ---
  2. <a name="2c7eN"></a>
  3. ### 2. mb_strlen()函数
  4. - 作用:同样是获取字符串的长度
  5. - 参数:
  6. - 1️⃣string 类型的字符串,
  7. - 2️⃣可选参数为编码设置
  8. - 返回值:成功则返回字符串 `string` 的长度
  9. - 注意:mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保
  10. extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。
  11. ```php
  12. <?php
  13. $str2 = "向上";
  14. echo mb_strlen($str2, 'UTF8') . '<br>'; // 2

3. strpos()函数和stripos()函数

  • 区别:同样是带i(ignore) 忽略大小写
  • 作用:在目标字符串中,检索你寻找的字符串,首次出现的下标位置
  • 参数:
    • 1️⃣目标字符串
    • 2️⃣需要寻找的标记项
    • 3️⃣可选参数,寻找下标的起点位置
  • 返回值:如果找到了则返回下标整数,如果没找到则返回 false
    1. <?php
    2. echo strpos("Hello world!", "world") . '<br>'; // 6
    3. echo strpos("Hello world!", "world", 6) . '<br>'; // 6
    4. var_dump(strpos("Hello world!", "world", 7)) . '<br>'; // false

还有几个类似的函数 strrpos — 计算指定字符串在目标字符串中最后一次出现的位置 strripos — 计算指定字符串在目标字符串中最后一次出现的位置 (相比于上一个 只是不区分大小写)


4. strstr()函数和stristr()函数

  • 作用:在目标字符串中查找你要寻找的字符串,从寻找到的开头至字符互串的结尾
  • 参数:
    • 1️⃣haystack
    • 2️⃣needle
    • 3️⃣before_needle,可选参数。若设置则返回要找字符串前面的字符串
  • 返回值:没找到返回false,找到了看情况。第三个参数设置true则返回前面的字符串,否则返回后面的字符串
  • 区别:strstr()区分大小写,stristr()不区分大小写 ```php <?php $email = ‘xs19960118@gmail.com’; var_dump(strstr($email, ‘mail’)) . ‘
    ‘; var_dump(strstr($email, ‘mail’, true)) . ‘
    ‘; var_dump(strstr($email, ‘mx’, true)) . ‘
    ‘;

// 运行结果 ‘mail.com’ ‘xs19960118@g’ false // 所以我们在判断是否包含某个字符串可以 if (stristr($haystack, $needle) !== false){ echo ‘存在要寻找的字符串’; }

// 同样也可以 if (stripos($haystack, $needle)) { echo ‘存在要寻找的字符串’; }

// 仔细一想,上面的这种形式不对,万一返回的下标是0 if(0) 就不会进入判断了,所以需要这么写 if (stripos($haystack, $needle) !== false) { echo ‘存在要寻找的字符串’; }

  1. ---
  2. <a name="Bg9nh"></a>
  3. ### 5. preg_replace()函数
  4. 我对正则表达式不是太熟先略过,这里只举几个最简单的基本例子
  5. - 作用:也是用于替换字符串,不过是用正则表达式来进行替换
  6. - 参数:
  7. - $pattern: 要搜索的模式,也就是正则表达式。<br />
  8. - $replacement: 将要被替换的字符串或字符串数组。<br />
  9. - $subject: 要搜索替换的目标字符串或字符串数组。<br />
  10. - $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。<br />
  11. - $count: 可选,为替换执行的次数。<br />
  12. - 返回值:
  13. - 成功:返回替换后的结果
  14. - 失败:返回原字符串
  15. 下面是几种常规模式
  16. ```php
  17. <?php
  18. // [1] 删除空格字符
  19. $str = 'runo o b';
  20. $str = preg_replace('/\s+/', '', $str);
  21. echo $str; // 将会改变为'runoob'
  22. // [2]

6. substr_replace()函数

  • 作用:子字符串替换
  • 参数:
    • 1️⃣ 原有的字符串
    • 2️⃣ 需要插入的字符串
    • 3️⃣ 插入位置
      • 正数 - 在字符串的指定位置开始
      • 负数 - 在从字符串结尾的指定位置开始
      • 0 - 在字符串中的第一个字符处开始
    • 4️⃣ 可选参数
      • 正数 - 被替换的字符串长度
      • 负数 - 从字符串末端开始的被替换字符数
      • 0 - 插入而非替换
  • 返回值:返回被替换的字符串。如果 string 是一个数组,则返回数组。

直接看代码理解:

  1. <?php
  2. // [1] 完全替换
  3. $str = "xsw";
  4. echo substr_replace($str, 'xs', 0); // xs
  5. // [2] 原字符串后加入字符串
  6. echo substr_replace($str, '19960118', strlen($str)); // xsw19960118
  7. // [3] 替换其中的一部分
  8. echo substr_replace('Hello world', 'xs', 6); // Hello xs
  9. // [4] 字符串的头插入
  10. echo substr_replace('world', 'Hello', 0, 0); // Hello world
  11. // [5] 替換其中的一部分,并且制定替换的长度
  12. echo substr_replace('Hello world', 'xs', 6, 2); // Hello xsrld
  13. // [6] 在任意位置插入字符串
  14. echo substr_replace('Hello world', '_xs_ ', 6, 0); // Hello _xs_ world

小结: substr_replace()函数可以做到较多事情,前三个是 a.可以对字符串进行完全和不完全替换 b.可以在任意位置进行插入字符串,一般头尾用的比较多。


7. substr()函数

  • 作用:截取字符串,过于常见的字符串函数哈哈。在js中也是这样的
  • 参数:
    • 1️⃣ 原字符串
    • 2️⃣ 截取的位置
    • 3️⃣ 截取的长度
  • 返回值:
    • 成功:返回截取成功后的字符串
    • 失败:返回false ```php <?php $res1 = substr(“abcdef”, 0, -1); // abcde var_dump($res1) . ‘
      ‘;

$res2 = substr(“abcdef”, 2, -1); // cde var_dump($res2) . ‘
‘;

$res3 = substr(“abcdef”, 4, -4); var_dump($res3) . ‘
‘; // false

$res4 = substr(“abcdef”, -2, -1); var_dump($res4) . ‘
‘; // e

  1. ---
  2. <a name="goPQG"></a>
  3. ### 8. substr_count()函数
  4. - 作用:用于计算字符串中出现子字符串的次数
  5. - 参数·:
  6. - 1️⃣ 源字符串
  7. - 2️⃣ 搜寻字符串
  8. - 3️⃣ 可选参数,开始位置
  9. - 4️⃣ 可选参数,搜寻长度
  10. - 返回值:
  11. - 找到了:返回出现的次数
  12. - 没找到:返回0
  13. - 注意,这个函数是区分大小写的
  14. ```php
  15. <?php
  16. $str1 = 'as OK as OK sc OK';
  17. var_dump(substr_count($str1, 'OK')) . '<br>'; // 3
  18. var_dump(substr_count($str1, 'ok')) . '<br>'; // 0

9. 字符串大小写转换函数

1. 转大写

  1. <?php
  2. echo strtoupper(my name is xs); // MY NAME IS XS

2. 转小写

  1. <?php
  2. echo strtolower("MY NAME IS XS"); // my name is xs

3. 字符串首字母转大写

  1. <?php
  2. echo ucfirst('i want to try') . '<br>'; // I want to try

4. 字符串首字符小写

  1. <?php
  2. echo lcfirst('I want to try') . '<br>'; // i want to try

5. 字符串中的每个单词首字母转大写

  1. <?php
  2. echo ucwords('i want to try') . '<br>'; // I Want To Try

6. 其它的类似函数

mb_strtolower()函数: 设置编码转小写

mb_strtoupper()函数: 设置编码转大写

mb_convert_case()函数: 转换设置 第一个参数:要被转换的 string 第二个参数:转换的模式。它可以是 MB_CASE_UPPER 转大写 MB_CASE_LOWER 转小写 MB_CASE_TITLE 首字母大写 第三个参数:[可选参数] 参数为字符编码。如果省略,则使用内部字符编码。


10. str_pad()函数

  • 作用:像一个字符串填充指定的字符串
  • 参数:
    • 1️⃣ 原字符串
    • 2️⃣ 填充后的长度
      • 如果 <= 原字符串的长度则不会发生填充
    • 3️⃣ 可选参数,填充的字符/字符串
    • 4️⃣ 可选参数,填充类型
      • STR_PAD_RIGHT 右端填充 — 默认模式
      • STR_PAD_LEFT 左端填充
      • STR_PAD_BOTH 两端填充
  • 返回值:返回填充后的字符串

下面的例子,一看就懂了

  1. <?php
  2. var_dump(STR_PAD_LEFT); // 0
  3. var_dump(STR_PAD_RIGHT); // 1
  4. var_dump(STR_PAD_BOTH); // 2
  5. $str = 'xs';
  6. //[1] 右端填充 xs 右端加上 19960118
  7. echo str_pad($str, (strlen($str) + 8), '19960118') . '<br>'; // xs19960118
  8. //[2] 左端填充 xs 右端加上 19960118
  9. echo str_pad($str, (strlen($str) + 8), '19960118', 0) . '<br>'; // xs19960118
  10. echo str_pad($str, (strlen($str) + 8), '19960118', STR_PAD_LEFT) . '<br>'; // xs19960118
  11. //[3] 两端填充 xs 两端填充 ****
  12. echo str_pad($str, (strlen($str) + 8), '****', STR_PAD_BOTH) . '<br>'; // ****xs****
  13. //[4] 填充失败返回原字符串
  14. echo str_pad($str, (strlen($str) - 8), '****', STR_PAD_BOTH) . '<br>'; //xs
  15. //[5] 循环填充
  16. echo str_pad($str, (strlen($str) + 8), 'abc') . '<br>'; // xsabcabcab

11. str_repeat()函数

  • 作用:重复复制一个字符串
  • 参数:
    • 1️⃣ 原字符串
    • 2️⃣ 复制的次数
  • 返回值:返回重复后的字符串
    1. <?php
    2. echo str_repeat('xs', 3) . '<br>'; // xsxsxs

12. str_replace()函数和str_ireplace()函数

  • 作用: 1-字符串替换
  • 参数:
    • 1️⃣ 需要被替换的字符串
    • 2️⃣ 替换后的字符串
    • 3️⃣ 目标字符串
    • 4️⃣ 计算替换的次数
  • 返回值
    • 成功:返回替换后的结构
    • 失败 :返回原字符串/原数组 ```php <?php // [1] Hello world => Hello xs $str = “Hello world”; echo str_replace(‘world’, ‘xs’, $str) . ‘
      ‘; // [1] 的运行结果 Hello xs

// [2] 若是都没有这个字符串 $str = “Hello world”; var_dump(str_replace(‘wod’, ‘xs’, $str)) . ‘
‘; // [2] 的运行结果还是 Hello world

// [3] 如果是针对于数组,单纯的用于替换 $arr = array(‘-a’, ‘-b’, ‘-c’); print_r(str_replace(‘-‘, ‘+’, $arr)); // [3] 的运算结果 Array ( [0] => +a [1] => +b [2] => +c )

// [4] 如果设置第四个参数,那么就会计算替换的次数 $arr = array(‘-a’, ‘-b’, ‘-c’); print_r(str_replace(‘-‘, ‘+’, $arr, $i)); echo “替换数:”. $i ; // [4] 的运算结果如下所示 Array ( [0] => +a [1] => +b [2] => +c ) 替换数:3

  1. ---
  2. <a name="UBwCp"></a>
  3. ### 13. str_split() 函数
  4. - 作用:将字符串分割成数组,非常常见的函数
  5. - 参数:
  6. - 1️⃣ 原字符串
  7. - 2️⃣ 可选参数 每一段的长度
  8. - 返回值:分割后的数组
  9. ```php
  10. <?php
  11. print_r(str_split("ab-cd-ef-gh",3));
  12. // 运算结果
  13. Array
  14. (
  15. [0] => ab-
  16. [1] => cd-
  17. [2] => ef-
  18. [3] => gh
  19. )
  20. // str_split() 函数无法分隔中文字符的问题,可以使用以下函数替代:
  21. function mb_str_split($str, $split_length = 1, $charset = "UTF-8")
  22. {
  23. if (func_num_args() == 1) {
  24. return preg_split('/(?<!^)(?!$)/u', $str);
  25. }
  26. if ($split_length < 1) {
  27. return false;
  28. }
  29. $len = mb_strlen($str, $charset);
  30. $arr = array();
  31. for ($i = 0; $i < $len; $i += $split_length) {
  32. $s = mb_substr($str, $i, $split_length, $charset);
  33. $arr[] = $s;
  34. }
  35. return $arr;
  36. }
  37. print_r(mb_str_split('我是向上'));
  38. // 运算结果
  39. Array
  40. (
  41. [0] => 我
  42. [1] => 是
  43. [2] => 向
  44. [3] => 上
  45. )

14. ord()函数与chr()函数

  1. <?php
  2. echo ord('A') . '<br>'; // 65
  3. echo chr(65) . '<br>'; // A
  • ord() 函数返回字符串中第一个字符的 ASCII 码
  • chr() 函数返回 ASCII 码对应的字符
  • 这两个函数是互补的

15. explode()函数

  • 作用:将字符串打散维数组,注意和 str_split() 函数的区别 ,前者按照某一个字符,后者按照固定长度
  • 参数:
    • 1️⃣ delimiter:分隔字符。
    • 2️⃣ string: 原字符串。
    • 3️⃣ limit:可选参数
      • 正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含剩余值
      • 负数,则返回除了最后的 -limit 个元素外的所有元素。
      • 0,则会被当做 1。
  • 返回值:返回处理后的数组 ```php <?php // [1] 不使用第三个参数 $str = ‘ab,ac,ad,ae,ahji’; print_r(explode(‘,’, $str)); / Array ( [0] => ab [1] => ac [2] => ad [3] => ae [4] => ahji ) /

// [2] 如果不存在分割字符 print_r(explode(‘-‘, $str)); / Array ( [0] => ab,ac,ad,ae,ahji ) /

// [3-1] limit > 0 print_r(explode(‘,’, $str, 3));

/ Array ( [0] => ab [1] => ac [2] => ad,ae,ahji ) /

// [3-3] limit = 0 print_r(explode(‘,’, $str, 0)); print_r(explode(‘,’, $str, 1)); / Array ( [0] => ab,ac,ad,ae,ahji ) Array ( [0] => ab,ac,ad,ae,ahji ) /

// [3-3] limit < 0 print_r(explode(‘,’, $str, -3)); // 只要前两个元素

/ Array ( [0] => ab [1] => ac ) /

  1. > implode() 函数:
  2. > 作用:和explode()函数正好是对立的,此函数将数组转换成字符串返回
  3. > 参数:第一个参数:分隔的字符
  4. > 第二个参数:原数组
  5. > 返回值:返回转换后的字符串
  6. > 注意: join()函数 是该函数的别名:implode()
  7. ```php
  8. <?php
  9. $array = array('lastname', 'email', 'phone');
  10. print_r(implode(",", $array)) . '<br>'; // lastname,email,phone

16. 移除字符串中多余的空格和其他字符

  • 两端移除:trim()
  • 左侧移除:ltrim()
  • 右侧移除:rtrim()
  • 参数:
    • 1️⃣ 需要被过滤的字符串
    • 2️⃣ 可选参数 规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:
      • “\0” - NULL
      • “\t” - 制表符
      • “\n” - 换行
      • “\x0B” - 垂直制表符
      • “\r” - 回车
      • “ “ - 空格
  • 返回值:返回过滤后的字符串
  1. <?php
  2. // [1-1] 仅仅删除前后的空格
  3. $str = ' xs ';
  4. var_dump(trim($str)) . '<br>';
  5. // [1-2] 删除左侧的空格
  6. var_dump(ltrim($str)) . '<br>';
  7. // [1-3] 删除右侧的空格
  8. var_dump(rtrim($str)) . '<br>';
  9. // [2-1] 删除逗号
  10. $str2 = 'xs,';
  11. var_dump(trim($str2, ',')) . '<br>'; // xs

其他函数

函数 作用 参数 返回值
strlen() 字符串的单词进行计数
strrev() 反转字符串
printf() 格式化输出字符串,类似C语言