使用此方法之前,请在php.ini中开启php_mbstring.dll扩展,将extension前面的;分号去掉即可,很多截取中文字符串的方法,大多不能实现按中文个数来截取所要的字符,以下代码可以实现:
<?php mb_internal_encoding('UTF-8'); $str = "中文测试chineseTest"; header('content-type:text/html; charset=UTF-8'); echo mb_strlen($str); echo '<br/>'; echo mb_substr($str, 1, 6); ?>
输出结果:15 文测试chi
上面只是测试,下面整理例子,代码如下:
<?php /*mb_string方法截取字符串长度 * $arr_str 数组或字符串 * $tlen 截取长度 * $fleid 要截取的字段(数组形式) */ header('Content-Type: text/html; charset=utf-8'); function interception($arr_str, $tlen, $fleid = '') { //判断是否是数组 if (is_array($arr_str)) { //将数组下标重新排列 foreach ($arr_str as $key => $val) { for ($k = 0; $k < count($fleid); $k++) { $content = $arr_str[$fleid[$k]]; //判断是否大于指定的长度 if (mb_strlen($content, 'utf-8') > $tlen) { $arr_str[$fleid[$k]] = mb_substr($content, 0, $tlen, 'utf-8') . '...'; } } } } //判断是否是字符串 elseif (is_string($arr_str)) { if (mb_strlen($arr_str, 'utf-8') > $tlen) { $arr_str = mb_substr($arr_str, 0, $tlen, 'utf-8') . '...'; } } return $arr_str; } //使用示例 //数组示例 $array = array( 'ha' => '哈尔滨市', 'bei' => '地球中国北京市', ); //字符串示例 $string = '中国的互联网:商业化很牛,公共服务几乎没有谢文'; $string2 = 'abcdefghijkl'; print_r(interception($array, 2, array( 'ha', 'bei' ))); echo '<br />' . interception($string, 5); echo '<br />' . interception($string2, 5); ?>
永久链接:
转载随意!带上文章地址吧。