1. strlen()函数
- 作用:获取字符串的长度
- 参数:string 类型的字符串
- 返回值:成功则返回字符串
string
的长度;如果string
为空,则返回 0。 ```php <?php $str1 = “Hello World!”; $str2 = “向上”;
echo strlen($str1) . ‘
‘; // 12
echo strlen($str2) . ‘
‘; // 6
---
<a name="2c7eN"></a>
### 2. mb_strlen()函数
- 作用:同样是获取字符串的长度
- 参数:
- 1️⃣string 类型的字符串,
- 2️⃣可选参数为编码设置
- 返回值:成功则返回字符串 `string` 的长度
- 注意:mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保
“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。
```php
<?php
$str2 = "向上";
echo mb_strlen($str2, 'UTF8') . '<br>'; // 2
3. strpos()函数和stripos()函数
- 区别:同样是带i(ignore) 忽略大小写
- 作用:在目标字符串中,检索你寻找的字符串,首次出现的下标位置
- 参数:
- 1️⃣目标字符串
- 2️⃣需要寻找的标记项
- 3️⃣可选参数,寻找下标的起点位置
- 返回值:如果找到了则返回下标整数,如果没找到则返回 false
<?php
echo strpos("Hello world!", "world") . '<br>'; // 6
echo strpos("Hello world!", "world", 6) . '<br>'; // 6
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 ‘存在要寻找的字符串’; }
---
<a name="Bg9nh"></a>
### 5. preg_replace()函数
我对正则表达式不是太熟先略过,这里只举几个最简单的基本例子
- 作用:也是用于替换字符串,不过是用正则表达式来进行替换
- 参数:
- $pattern: 要搜索的模式,也就是正则表达式。<br />
- $replacement: 将要被替换的字符串或字符串数组。<br />
- $subject: 要搜索替换的目标字符串或字符串数组。<br />
- $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。<br />
- $count: 可选,为替换执行的次数。<br />
- 返回值:
- 成功:返回替换后的结果
- 失败:返回原字符串
下面是几种常规模式
```php
<?php
// [1] 删除空格字符
$str = 'runo o b';
$str = preg_replace('/\s+/', '', $str);
echo $str; // 将会改变为'runoob'
// [2]
6. substr_replace()函数
- 作用:子字符串替换
- 参数:
- 1️⃣ 原有的字符串
- 2️⃣ 需要插入的字符串
- 3️⃣ 插入位置
- 正数 - 在字符串的指定位置开始
- 负数 - 在从字符串结尾的指定位置开始
- 0 - 在字符串中的第一个字符处开始
- 4️⃣ 可选参数
- 正数 - 被替换的字符串长度
- 负数 - 从字符串末端开始的被替换字符数
- 0 - 插入而非替换
- 返回值:返回被替换的字符串。如果 string 是一个数组,则返回数组。
直接看代码理解:
<?php
// [1] 完全替换
$str = "xsw";
echo substr_replace($str, 'xs', 0); // xs
// [2] 原字符串后加入字符串
echo substr_replace($str, '19960118', strlen($str)); // xsw19960118
// [3] 替换其中的一部分
echo substr_replace('Hello world', 'xs', 6); // Hello xs
// [4] 字符串的头插入
echo substr_replace('world', 'Hello', 0, 0); // Hello world
// [5] 替換其中的一部分,并且制定替换的长度
echo substr_replace('Hello world', 'xs', 6, 2); // Hello xsrld
// [6] 在任意位置插入字符串
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
---
<a name="goPQG"></a>
### 8. substr_count()函数
- 作用:用于计算字符串中出现子字符串的次数
- 参数·:
- 1️⃣ 源字符串
- 2️⃣ 搜寻字符串
- 3️⃣ 可选参数,开始位置
- 4️⃣ 可选参数,搜寻长度
- 返回值:
- 找到了:返回出现的次数
- 没找到:返回0
- 注意,这个函数是区分大小写的
```php
<?php
$str1 = 'as OK as OK sc OK';
var_dump(substr_count($str1, 'OK')) . '<br>'; // 3
var_dump(substr_count($str1, 'ok')) . '<br>'; // 0
9. 字符串大小写转换函数
1. 转大写
<?php
echo strtoupper(my name is xs); // MY NAME IS XS
2. 转小写
<?php
echo strtolower("MY NAME IS XS"); // my name is xs
3. 字符串首字母转大写
<?php
echo ucfirst('i want to try') . '<br>'; // I want to try
4. 字符串首字符小写
<?php
echo lcfirst('I want to try') . '<br>'; // i want to try
5. 字符串中的每个单词首字母转大写
<?php
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 两端填充
- 返回值:返回填充后的字符串
下面的例子,一看就懂了
<?php
var_dump(STR_PAD_LEFT); // 0
var_dump(STR_PAD_RIGHT); // 1
var_dump(STR_PAD_BOTH); // 2
$str = 'xs';
//[1] 右端填充 xs 右端加上 19960118
echo str_pad($str, (strlen($str) + 8), '19960118') . '<br>'; // xs19960118
//[2] 左端填充 xs 右端加上 19960118
echo str_pad($str, (strlen($str) + 8), '19960118', 0) . '<br>'; // xs19960118
echo str_pad($str, (strlen($str) + 8), '19960118', STR_PAD_LEFT) . '<br>'; // xs19960118
//[3] 两端填充 xs 两端填充 ****
echo str_pad($str, (strlen($str) + 8), '****', STR_PAD_BOTH) . '<br>'; // ****xs****
//[4] 填充失败返回原字符串
echo str_pad($str, (strlen($str) - 8), '****', STR_PAD_BOTH) . '<br>'; //xs
//[5] 循环填充
echo str_pad($str, (strlen($str) + 8), 'abc') . '<br>'; // xsabcabcab
11. str_repeat()函数
- 作用:重复复制一个字符串
- 参数:
- 1️⃣ 原字符串
- 2️⃣ 复制的次数
- 返回值:返回重复后的字符串
<?php
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
---
<a name="UBwCp"></a>
### 13. str_split() 函数
- 作用:将字符串分割成数组,非常常见的函数
- 参数:
- 1️⃣ 原字符串
- 2️⃣ 可选参数 , 每一段的长度
- 返回值:分割后的数组
```php
<?php
print_r(str_split("ab-cd-ef-gh",3));
// 运算结果
Array
(
[0] => ab-
[1] => cd-
[2] => ef-
[3] => gh
)
// str_split() 函数无法分隔中文字符的问题,可以使用以下函数替代:
function mb_str_split($str, $split_length = 1, $charset = "UTF-8")
{
if (func_num_args() == 1) {
return preg_split('/(?<!^)(?!$)/u', $str);
}
if ($split_length < 1) {
return false;
}
$len = mb_strlen($str, $charset);
$arr = array();
for ($i = 0; $i < $len; $i += $split_length) {
$s = mb_substr($str, $i, $split_length, $charset);
$arr[] = $s;
}
return $arr;
}
print_r(mb_str_split('我是向上'));
// 运算结果
Array
(
[0] => 我
[1] => 是
[2] => 向
[3] => 上
)
14. ord()函数与chr()函数
<?php
echo ord('A') . '<br>'; // 65
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 ) /
> implode() 函数:
> 作用:和explode()函数正好是对立的,此函数将数组转换成字符串返回
> 参数:第一个参数:分隔的字符
> 第二个参数:原数组
> 返回值:返回转换后的字符串
> 注意: join()函数 是该函数的别名:implode()
```php
<?php
$array = array('lastname', 'email', 'phone');
print_r(implode(",", $array)) . '<br>'; // lastname,email,phone
16. 移除字符串中多余的空格和其他字符
- 两端移除:trim()
- 左侧移除:ltrim()
- 右侧移除:rtrim()
- 参数:
- 1️⃣ 需要被过滤的字符串
- 2️⃣ 可选参数 规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:
- “\0” - NULL
- “\t” - 制表符
- “\n” - 换行
- “\x0B” - 垂直制表符
- “\r” - 回车
- “ “ - 空格
- 返回值:返回过滤后的字符串
<?php
// [1-1] 仅仅删除前后的空格
$str = ' xs ';
var_dump(trim($str)) . '<br>';
// [1-2] 删除左侧的空格
var_dump(ltrim($str)) . '<br>';
// [1-3] 删除右侧的空格
var_dump(rtrim($str)) . '<br>';
// [2-1] 删除逗号
$str2 = 'xs,';
var_dump(trim($str2, ',')) . '<br>'; // xs
其他函数
函数 | 作用 | 参数 | 返回值 |
---|---|---|---|
strlen() | 字符串的单词进行计数 | ||
strrev() | 反转字符串 | ||
printf() | 格式化输出字符串,类似C语言 |