通常,我们都知道使用php进行中文字符串的截取时,有两种选择:

<html>
<head><meta charset=\'utf-8\'><title>第一php网提供的教程--截取中文字符串</title>
</head>
<body>
<?php
$str=\'123我靠abc中国人\';
echo substr($str,0,4);
echo \'<br>\';
echo iconv_substr($str,0,4,\'utf-8\');
echo \'<br>\';
echo mb_substr($str,0,4,\'utf-8\');
?>
</body>
</html>

在上面的代码中,我们使用了两个函数iconv_substr和mb_substr,他们都可以在当前字符下进行字符串截取,以达到中文字符截取的不乱码。

那么我们应该选择哪一种呢?

1、根据PHP手册的说明,iconv库在某些操作系统上可能运行不正确,需要安装GNU扩展库以保证它的正常运行。这透露给我们的信息是mb函数的兼容性更好。

2、iconv函数会先将当前字符串转换为相应的编码再进行截取,而mb函数则是直接根据指定的编码进行截取【提供安全的多字节截取】,所以mb函数的截取效率更高。

因此,站长建议大家使用mb_substr函数来进行中文字符串的截取。

转自:http://www.phptogether.com/archives/12610

版权声明:本文为devcjq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/devcjq/articles/3210968.html