utf-8中文擷取函式
在php中,substr()函式擷取帶有中文字串的話,可能會出現亂碼,這是因為中西文乙個位元組所占有的位元組數不一樣,而substr的長度引數是按照位元組去算的,在gb2312編碼時,乙個中文佔2個位元組,英文為1個位元組,而在utf-8編碼當中,乙個中文可能占有2個或3個位元組,英文或半形標點佔1位元組。
解決方法
utf-8編碼的字元可能由1-3個位元組組成,具體數目可以由第乙個位元組判斷出來。
第乙個位元組大於224的,它與它之後的2個位元組一起組成乙個utf-8字元
第乙個位元組大於192小於224的,它與它之後的1個位元組組成乙個utf-8字元,否則第乙個位元組本身就是乙個英文本元(包括數字和一小部分標點符號)。
<?php
$a="我是程式設計師";
class dx
elseif(ord(substr($string,$n,1))>192)
else
}return $str; }
else
}public function msub($string,$start,$length)
else
}return $str; }
else
} }$sub = new dx();
echo $sub->msubstr($a,0,8);//我是程式
?>
除了上面的方法,還可以使用mb_substr來解決,**如下:
<?php
$a="wo的name是中國!";
echo mb_substr($a,0,9,'utf-8');//wo的name是中
echo substr($a,0,15);//wo的name是中
?>
PHP實現中文字串擷取無亂碼的方法
在ascii中,0xa0表示漢字的開始 其中php中的乙個函式ord 函式 此函式功能返回乙個字元的askii碼值 如ord a 65 請看此函式 實現中文字串擷取無 這是明顯用來處理擷取一段漢字的程式,在ascii中,0xa0表示漢字的開始 其中php中的乙個函式ord 函式 此函式功能返回乙個字...
PHP實現中文字串擷取無亂碼
ascii碼 乙個中文漢字佔兩個位元組的空間。utf 8編碼 乙個中文 含繁體 等於三個位元組。unicode編碼 乙個中文 含繁體 等於兩個位元組。我們寫頁面基本都是utf 8編碼 echo substr php中文網 0,5 substr 返回字串子串 substr 第乙個引數是要擷取的字串,第...
PHP中實現中文字串擷取無亂碼的方法
在php中,substr 函式擷取帶有中文字串的話,可能會出現亂碼,這是因為中西文乙個位元組所占有的位元組數不一樣,而substr的長度引數是按照位元組去算的,在gb2312編碼時,乙個中文佔2個位元組,英文為1個位元組,而在utf 8編碼當中,乙個中文可能占有2個或3個位元組,英文或半形標點佔1位...