【php基础】PHP常用字符串操作函数

本文详细介绍了PHP中字符串的基本操作,包括长度计算、替换、查找与截取等,并特别关注了如何处理包含中文的字符串,提供了适用于中文的替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1·长度计算
纯英文字符串
strlen()
计算字符串的长度,但是不能测量中英文混合的字符串;
mb_strlen()
计算字符串的长度,对于中英文混合的字符串,会将中文字符计算为一个字符;需要第二个参数指定字符串的编码方式


2·字符串的替换
str_replace()
    查找需要的字符串,使用指定的字符串对其进行替换
preg_replace()
    和str_replace一样,但是指定被替换字符的方式有所不同,str_replace使用纯粹的字符,preg_replace可以使用正则表达式
strtr(string $str,string $from,string $to)
    遍历$str,将其中的$from[$n]替换成$to[$n];$n为$from和$to都有的有效位移;
    【$from和$to为中文时,替换可能会引起错误;
    错误示例代码:
        header('Content-type:text/html;charset=utf-8');
        echo strtr("中国好事多", "中国", "河南"),"\n";
    】
strtr(string $str,array $replace_pairs);
    $replace_pairs是一个数组,该数组中所有的键只要在$str中存在就会被替换成对应的值
    【使用这种形式可以避免上诉的错误
    示例代码:
        header('Content-type:text/html;charset=utf-8');
        echo strtr("中国好事多",array("中国"=>"河南"));
        echo '<br/>';
    】
substr_replace($string,string $replacement,$start[,$length])
    将$string中从$start开始的长度为$length的部分替换为$replacement;如果$length不存在,则$length将默认为$string的长度;
    【对包含中文字符串,需要寻找可替代方案】
str_split($string[,$length]);
将字符串按照每一小段长度为$length的方式进行截取;如果不指定$length,则默认为1
    【对于包含中文的字符串,会引起错误】


   
3·字符串查找
strpos($string,$needle)
    查询$needle在$string中第一次出现的位置
    [遇到有包含中文的字符串的时候,
    strpos无法获取正确的结果
    mb_strpos可以用来精确的得出结果
    ]
stripos与strpos相似,但是忽略大小写的影响
    
strstr($string,$needle)
    返回在$string中$needle第一次出现的位置到$string结尾的子串
stristr()
    与strstr类似,只是不区分大小写

substr($str,$start,$length)
    截取字符串,截取$str中从$start开始长度为$length的子串
    【对于包含中文字符串,截取会出现错误
        需要使用mb_substr()函数来替换
    】



1·截取中文字符串
    mb_substr($string,$start,$length,$encoding);
    截取字符串$string,从$start开始,长度为$lenght,$encoding指定字符串的编码方式,指定正确的编码方式可以使中文在截取的时候识别为一个字符
    iconv_substr();
    与mb_substr用法相似,但是iconv在某些操作系统上可能运行不正常需要安装gnu扩展;相比而下,mb_substr的兼容性更好一些
    iconv会先将字符串转换为相应的编码再进行截取,而mb_substr则是直接在指定的编码下进行截取,效率更高一些。

2·提取中文字符串
  function pregCh($test){
        //utf8下匹配中文
        $rule ='/([\x{4e00}-\x{9fa5}]){1}/u';
        preg_match_all($rule,$test,$result);
        return $result;
    }


2·提取中文字符串
 

  function pregCh($test){
        //utf8下匹配中文
        $rule ='/([\x{4e00}-\x{9fa5}]){1}/u';
        preg_match_all($rule,$test,$result);
        return $result;
    }


   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值