PHP处理字符串相关函数


9527
9527 2023-11-08 11:48:27 52192
分类专栏: 资讯

字符串几乎是所有面试环节一定会问道的问题,然而有些字符串函数我们经常会忘记。主要是因为平时开发我都依赖PHP Storm开发工具,我们只需要输入首字母,开发工具就会给我们非常好的提示,导致我们忘记一些函数的全称,今天我们就来总结一下关于字符串的操作函数。

一. 读取某个位置的字符串

1.1 通过索引的方式读取

这种方式本身就有缺陷,如果字符串中有中文,你会发现中这种方式只读取了一半或者说是获取到的是一个无法打印的空字符串,但是如果我们使用 strlen() 获取字符串的长度时,返回的是: 1 ,具体的可以从下方打印结果中可以看出:

$str = 'acdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfd';
echo $str[0]; // 打印:a

var_dump($str[26]); //string(1) ""

echo strlen($str[26]); //打印:1

1.2 字符串截取

对于字符串截取PHP提供了两个函数:substr 和 mb_substr 。这两个函数的参数及意义是一致,没有区别。主要区别在于截取的字符串本身。

substr() 函数只能截取不含中文的字符串,否则会和上面的索引获取字符串一样,返回空字符串。具体用法和表现如下:

$str = 'acdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfd';

echo substr($str,10,1); //打印:f

var_dump(substr($str,26,1)); //打印:string(1) ""

echo strlen(substr($str,26,1)); //打印:1

如果想要解决字符串中有中文的问题,大家可以使用 mb_substr() 函数进行截取,具体用法和 substr() 函数一样。具体操作如下:

<?php
$str = 'acdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfd';

echo mb_substr($str,10,1); //打印:f

echo mb_substr($str,26,1); // 打印:和

mb_substr 及 substr 函数参数描述:

参数一:待截取的字符串

参数二:截取的开始位置

参数三(可选):截取的长度,如果没有长度,默认截取到字符串末尾

二. 获取字符串的长度

PHP提供了 strlen() 函数获取字符串的长度,具体用法如下:

$str = 'acdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfd';

echo strlen($str); //打印:75

注意:php在UTF-8编码下,一个汉字占3个字节,gbk编码下只占2个字节。我们一般都是UTF-8编码。

一个字幕暂用一个字符,但是不同编码格式下,一个中文暂用的字符数不同,一般都是UTF-8编码。不同编码下可以使用strlen查看具体暂用多少个字符数:

$str = 'acdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfd';
echo strlen(mb_substr($str,26,1)); //打印:3

三. 某个字符串出现的位置

字符串出现的位置分两种情况,即首次出现的位置和最后依次出现的位置

PHP对于首次出现的位置问题,给我们提供了2个函数,分别是:strpos() 和 stripos() 。这两个函数主要是判断是否区分大小写

3.1 区分大小写查找字符首次出现的位置

$str = 'acDdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfd';

echo strpos($str,'d'); //打印:3

3.2 不区分大小写查找字符首次出现的位置

$str = 'acDdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfd';

echo stripos($str,'d'); //打印:2

对于最后一次出现的位置,PHP也提供了两个函数:strrpos() 和 strripos() 。和上面的这两个函数的区别一样,都是对大小写是否敏感

3.3 区分大小写查找字符最后出现的位置

$str = 'acDdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfdD';

echo strrpos($str,'d'); //打印:75

3.4 不区分大小写查找字符最后出现的位置

$str = 'acDdsfvsgtrfehtejt4543的萨瓦过热和你v发电收入和北方的safvdbfdD';

echo strripos($str,'d'); //打印:76

四. 字符串替换

对于字符替换,PHP提供了很多函数,有区分大小写的,也有查找替换,还有按索引位置的方式进行替换,我们这里以日常工作中经常使用的函数为例

4.1 查找替换

str_replace() 函数查找字符并替换新字符。这个函数会将字符串中查找到的符合条件的所有字符都替换成新字符,具体表现如下:

$str = 'acDdsfvsgtrfehtejt4543safvdbfdD';

echo str_replace('d','W',$str);
// 打印结果:acDWsfvsgtrfehtejt4543safvWbfWD

注意:索引位置3的d 及 其他位置的d 都被替换了

参数一:查找的字符

参数二:替换的新字符

参数三:待查找的字符串

参数四(可选):参数四必须是一个变量,用于接受替换的次数即查找的字符串一共有多少个

str_replace() 函数是区分大小写的,如果需要不区分大小写,可以使用 str_ireplace() 函数。用法和上面的 str_replace() 函数一样

4.2 根据索引位置替换新的字符

substr_replace() 函数用于替换指定索引位置的字符。具体用法如下:

$str = 'acDdsfvsgtrfehtejt4543safvdbfdD';

echo substr_replace($str,'d',2,1); //打印:acddsfvsgtrfehtejt4543safvdbfdD

echo $str; //打印:acDdsfvsgtrfehtejt4543safvdbfdD

参数一:待处理字符串

参数二:待替换的新字符

参数三:替换的开始索引位置

参数四(可选):替换的长度,默认为null。如果值为0或者null时,会直接将开始位置到最后一个字符串一起替换

4.3 格式化填充字符串

在一些业务逻辑处理时,我们可能需要先定义一个字符串,在把字符串中某些特殊字符替换成自己想要字符,例如下方代码中将某个名称填充到字符串中:

$str = 'hello,my name:%s,who your name';
echo sprintf($str,'小明'); //打印结果:hello,my name:小明,who your name

在一些特殊场景中我们可能需要将一个浮点数格式化填充到某个字符串中。例如价格需要以两位数的方式显示,此时就可以使用【%.2f】的方式指定格式化结果:

$str = 'The price of apples:¥%.2f';
echo sprintf($str,15); //打印结果:The price of apples:¥15.00

关于字符串格式化的标识,大家可以参考官方文档

https://www.php.net/manual/zh/function.sprintf

五. 字符串拆分和拼接

5.1 字符串拆分成数组

explode() 函数可以将一个有特殊规律的字符串拆分成数组。它还可以规定拆分的数量限制,具体表现如下

<?php
$str = 'java|go|php|js|python';
var_dump(explode('|',$str));
/**
* 打印结果:
* array(5) {
[0]=>
string(4) "java"
[1]=>
string(2) "go"
[2]=>
string(3) "php"
[3]=>
string(2) "js"
[4]=>
string(6) "python"
}
*/
//限定拆分的数量
var_dump(explode('|',$str,2));
/**
* 打印结果:
* array(2) {
[0]=>
string(4) "java"
[1]=>
string(16) "go|php|js|python"
}
*/

参数一:用于拆分的分隔符

参数二:待处理字符

参数三(可选):拆分的数量限制。默认拆分到最后一个符合条件的字符

如果字符串是一个没有规律的字符串,我们可以按固定长度进行拆分。PHP提供了 str_split() 函数,具体使用如下:

$str = 'java|go|php|js|python';
var_dump(str_split($str,8));
/**
* 打印结果:
* array(3) {
[0]=>
string(8) "java|go|"
[1]=>
string(8) "php|js|p"
[2]=>
string(5) "ython"
}
*/

参数一:待处理字符串

参数二(可选):拆分的长度。默认为1

5.2 将数组拼接成字符串

字符串与字符串之间可以使用 . 号进行拼接,例如下方代码:

$str1 = 'java';
$str2 = 'PHP';
echo $str1.$str2; //打印结果:javaPHP

PHP提供了一个 implode() 函数将数组按固定规则进行拼接。具体使用方法如下:

$arr = ['java','go','php','js','python'];
echo implode(',',$arr); //打印结果:java,go,php,js,python

参数一:待处理数组

参数二(可选):分隔符。默认为空字符串

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=28186
赞同 0
评论 0 条
9527L0
粉丝 0 发表 10 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2959
【软件正版化】软件正版化工作要点  2878
统信UOS试玩黑神话:悟空  2843
信刻光盘安全隔离与信息交换系统  2737
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1270
grub引导程序无法找到指定设备和分区  1235
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
点击报名 | 京东2025校招进校行程预告  164
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  159
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!