使用此方法之前,请在php.ini中开启php_mbstring.dll扩展,将extension前面的;分号去掉即可
很多截取中文字符串的方法,大多不能实现按中文个数来截取所要的字符,
以下代码可以实现:
代码如下 | 复制代码 |
<?php mb_internal_encoding('UTF-8'); $str = "中文测试chineseTest"; header('content-type:text/html; charset=UTF-8'); |
输出结果:
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); ?> |
时间: 2024-10-03 05:51:32