使用此方法之前,請在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);
- ?>
新聞熱點
疑難解答