php截取字符串技巧:截取左边字符、截取右边字符,删除左边字符,删除右边字符

1年前 5932次浏览

最近在做一个PHP项目,经常需要截取字符串,有时侯需要截取字符串左边几个字符,有时侯又需要截取字符串右边几个字符,更有些时侯我们还需要删除字符串左边的几个字符或是删除字符串右边的几个字符,这里把这几种字符串截取的方法总结一下:

使用substr() 函数:该函数为返回字符串的一部分。substr (string str, int start,[int length]),其本使用是将字符串截取从start字符截取length字符。

截取左边几个字符

当需要将字符串$str="aaabbbccc";截取前面三个字符,可以使用substr($str,0,3)则输出结果为aaa。

截取右边几个字符

当需要取字符串$str="aaabbbccc";右边的三个字符,可以使用substr($str,strlen($str)-3)则输出结果为ccc。

同样可以使用substr($str,-3)同样可以截取右边的三个字符。

删除字符串左边的几个字符

当需要将字符串$str="aaabbbccc";前面三个字符删除,可以使用substr($str,3)则输出结果为bbbccc。

删除字符串右边的几个字符

当需要删除字符串$str="aaabbbccc";右边的三个字符,可以使用substr($str,0,-3)则输出结果为aaabbb。

截取中文字符

但是当使用substr来截取中文字符串时会出现问题。如:substr("中文测试文本",0,8)显示结果会出现一个乱码,如图:

php截取字符串技巧:截取左边字符、截取右边字符,删除左边字符,删除右边字符

所以在截取中文字符串时需要使用mb_substr函数才完美。

mb_ substr(string str,int start,[int length],[string encoding]),但是在使用mb_substr函数截取中文字符串时最好事先定义好encoding。这样可以省去encoding参数。因为当我们使用mb_substr函数时如果加上了encoding参数,那么length也不能省略。

php截取字符串技巧:截取左边字符、截取右边字符,删除左边字符,删除右边字符

如果不事先定义encoding的话,如果在mb_substr里面又不单独定义encoding那么在截取中文时还是会出现乱码的。

总结:能够确定字符串为纯英文时使用substr,当不清楚需要处理的字符串为中文还是英文时用mb_substr,如果是中英文混合的使用mb_substr。而当使用mb_substr时事先定义encoding是很有必要的。