PHP 中文字符串截取
本文提供两种方法实现中文字符串的截取
1.使用系统提供的 mb_substr() 或 iconv_substr() 函数(php.ini 配置文件中的 mbstring 扩展要开启才能使用):
函数说明:
string mb_substr ( string
$str
, int$start
[, int$length
= NULL [, string$encoding
= mb_internal_encoding() ]] )
参数:
str 从该 string 中提取子字符串。
start str 中要使用的第一个字符的位置。
length str 中要使用的最大字符数。
encoding 字符编码。如果省略,则使用内部字符编码
例子:
$str = "是sdw来的abcde"; echo mb_substr($str,0,5,"utf-8") . "<br/>"; // 输出:是sdw来
iconv_substr() 函数的用法同 mb_substr() 。
2.自己编写一个字符串截取函数解决:
/** * 中文字符串截取 * @param string $str 待截取的字符串 * @param int|integer $start 开始位置 * @param int|null $length 截取长度,默认截取到字符串末尾 */ function UTF8Substr($str, $start = 0, $length = NULL) { $count = 0; $offset = $start; $len = strlen($str); for ($i=0; $i < $len; $i++) { if (($count - $start) == $length) { break; } if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", substr($str, $i, 1))) { $i += 2; } ++$count; if ($count == $start) { $offset = $i + 1; } } return substr($str, $offset, $length?($i - $offset):strlen($str)); }测试用例:
$str = "a是df浏览未dfsdfads"; var_dump(UTF8Substr($str, 3, 5)); // 输出:f浏览未d var_dump(UTF8Substr($str, 3)); // 输出:f浏览未dfsdfads
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: Centos下编译安装fileinfo扩展