ascii碼: 乙個中文漢字佔兩個位元組的空間。
utf-8編碼: 乙個中文(含繁體)等於三個位元組。
unicode編碼:乙個中文(含繁體)等於兩個位元組。
我們寫頁面基本都是utf-8編碼
<?php
echo substr("php中文網",0,5);?>
substr:返回字串子串
substr( ) 第乙個引數是要擷取的字串,第二個引數表示從0位置開始擷取,第三個引數表示擷取的長度。
結果:php�
說明,substr是按著位元組數進行擷取的,所以出現亂碼。
<?php
echo mb_substr("php中文網",0,5);?>
結果:php中文
說明,mb_substr是按著字元數來擷取的,所以結果正常
<?php
echo mb_strcut("php中文網",0,7);?>
結果:php中
說明,mb_strcut也是按著位元組數擷取的,且擷取後不會出現亂碼,多出的位元組並不顯示。
所以,可以用mb_substr( )和mb_strcut( )進行字元擷取,且無亂碼。
說明,將字串的一部分插入或替換為另一部分,substr_replace( )函式使用也會有亂碼出現,建議用mb_substr擷取,再用連線字串解決。
語法: substr_replace(string,replacement,start,length);
<?php
echo substr_replace("hello world","shanghai",-5,);?>
hello shanghai
第乙個引數:原字串
第二個引數:要替換的字串
第三個引數:規定從字串的何處開始替換,正數,負數,0
第四個引數:可選,規定從當前位置開始要替換的長度(預設從當前位置開始,全部替換)
正數:替換的長度
負數:待替換的字串距離string結尾的個數
0:表示插入而非替換
<?php
echo substr_replace("hello 上海","shanghai",7);?>
hello �shanghai
=>
<?php
$string=mb_substr("hello 上海",0,6);
echo $string.'shanghai';?>
hello shanghai
PHP實現中文字串擷取無亂碼的方法
在ascii中,0xa0表示漢字的開始 其中php中的乙個函式ord 函式 此函式功能返回乙個字元的askii碼值 如ord a 65 請看此函式 實現中文字串擷取無 這是明顯用來處理擷取一段漢字的程式,在ascii中,0xa0表示漢字的開始 其中php中的乙個函式ord 函式 此函式功能返回乙個字...
PHP中實現中文字串擷取無亂碼的方法
在php中,substr 函式擷取帶有中文字串的話,可能會出現亂碼,這是因為中西文乙個位元組所占有的位元組數不一樣,而substr的長度引數是按照位元組去算的,在gb2312編碼時,乙個中文佔2個位元組,英文為1個位元組,而在utf 8編碼當中,乙個中文可能占有2個或3個位元組,英文或半形標點佔1位...
實現中文字串擷取無亂碼的方法
utf 8中文擷取函式 在php中,substr 函式擷取帶有中文字串的話,可能會出現亂碼,這是因為中西文乙個位元組所占有的位元組數不一樣,而substr的長度引數是按照位元組去算的,在gb2312編碼時,乙個中文佔2個位元組,英文為1個位元組,而在utf 8編碼當中,乙個中文可能占有2個或3個位元...