PHP中文字串擷取函式

2021-06-06 06:53:58 字數 1148 閱讀 4242

/****首先是csdn論壇php斑竹xuzuning(嘮叨)老大的,支援gb2312,gbk,big三種編碼。

以下是**:***/

$len = 19;

$text = "怎麼將新聞的很長的標題只顯示前面一些字,後面用.....來代替?";

echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."....");

/****chr(0)不是null

null是什麼都沒有,而chr(0)的值是0。表示成16進製制是0x00,表示成二進位制是00000000

雖然chr(0)不會顯示出什麼,但是他是乙個字元。

當漢字被截斷時,根據編碼規則他總是要把後邊的其他字元拉過來一起作為漢字解釋,這就是出現亂碼的原因。而值為0x81到0xff與0x00組合始終都顯示為「空」

根據這一特點,在substr的結果後面補上乙個chr(0),就可以防止出現亂碼了

注:編碼 第一位元組 第二位元組

gb2312 0xa1-0xf7 0xa1-0xfe

gbk 0x81-0xfe 0x81-0xfe 0x40-0x7e

big5 0xa1-0xf7 0x81-0xfe 0x40-0x7e

其次這個是網上搜尋的,支援utf-8編碼,原作者不詳:

*****/

function substring_utf8($str, $start, $lenth)

elseif (substr($a, 0, 3) == 110) elseif (substr($a, 0, 4) == 1110)

$n++;

}elseelseif (substr($a, 0, 3) == 110) elseif (substr($a, 0, 4) == 1110) else

if (++$m >= $lenth)}}

return $r;

} // end substring_utf8;

}// end string

#由於此函式返回的是乙個陣列,因此要配合join函式來顯示字串:

#join('',substring_utf8($str, $start, $lenth));

#在頁面顯示的時候還可以在此語句後面連乙個"..."

多個PHP中文字串擷取函式

如下 else elseif ord stringtmp 192 else stringlast stringtmp stringlast implode stringlast return stringlast string 簡明現代魔法 專注於網際網路主流的各種技術 length 27 輸出 簡...

PHP 中文字串擷取

本文提供兩種方法實現中文字串的擷取 1.使用系統提供的 mb substr 或iconv substr 函式 php.ini 配置檔案中的 mbstring 擴充套件要開啟才能使用 函式說明 string mb substr string str,int start int length null ...

PHP擷取中文字串方法

程式一 php擷取中文字串方法 由於 首頁以及vtigercrm裡經常在擷取中文字串時出現亂碼 使用substr 今天找到乙個比較好的擷取中文字串方法,在此與大家共享。function msubstr str,start,len else echo newstr 程式二 php擷取utf 8字串,解...