2007年4月30日 星期一

PHP中文字截取處理函數

在PHP中若沒有特別處理截取中文字串的動作
直接使用傳統的字串截取函數substr
來處理含有中文字的字串時
若最後一個字漢字則會出現漢字被切斷的問題
最簡單的方法就是使用Multibyte String 的 mb_substr
但是現下還是有很多主機商並沒有支援Multibyte String
因為PHP是高度的自由化
可以為自己本身的需求來自訂自己的PHP解析引擎
只編譯本身需要的
不需要的就不要編進PHP中
在有支援Multibyte String時切中文字串就變的很簡單
$string="12345六七八九十甲乙丙丁";
echo mb_substr($string,0,10,'big5');
上面的例子就會輸出
12345六七八九十
若是沒有支援Multibyte String時就得自己相辦法來處理
處理的函數如下
function chinesesubstr($arg_strContent,$arg_intTrimLength)
{
$strReturnString = "";
$intLoopCount = 0;
while ($intLoopCount < $arg_intTrimLength)
{
$chrSingle = substr($arg_strContent,$intLoopCount,1);
if(ord($chrSingle) > 0x80)
{
$intLoopCount++;
$arg_intTrimLength++;
}
$intLoopCount++;
}
$strReturnString = substr($arg_strContent,0,$intLoopCount);

return $strReturnString;
}

echo chinesesubstr($string,10);
一樣輸出
12345六七八九十

中文字截取的問題就解決了

【下列文章您可能也有興趣】

沒有留言: