php擷取UTF 8中文字串問題

2022-06-07 16:05:02 字數 5721 閱讀 7142

1樓:匿名使用者

substr()函式可以 分割文字,但要分割的文字如果包括中文字元往往會遇到問題,這時可以用mb_substr()/mb_strcut這個函式,mb_substr() /mb_strcut的用法與substr()相似,只是在mb_substr()/mb_strcut最後要加入多乙個引數,以設定字串的編碼,但是 一般的伺服器都沒開啟php_mbstring.dll,需要在php.ini在把php_mbstring.

dll開啟。

mb_substr是按字來切分字元,而mb_strcut是按位元組來切分字元,但是都不會產生半個字元的現象……

所以,把$str=substr($text,0,$k);替換為 $str=mb_substr($text,0,$k,'utf-8');就ok了

2樓:姑蘇初晴

試一試這個函式:

//function :擷取中文字元

function zh_substr($string, $start, $length)

else

}return $str.'...';

}else}

3樓:匿名使用者

無法擷取utf-8字串,因為utf-8字串,位元組數不固定

4樓:匿名使用者

登入後再說一遍,增加積分,無法擷取utf-8字串,因為utf-8字串,位元組數不固定

請問下php怎麼處理擷取字串出現的亂碼問題

5樓:水狗跳大

<?php

$string ="大蘇打很深刻的驕傲了";

$new_str = mb_substr($string,2,4,"utf-8");

//mb_substr.擷取字串php內建函式,引數分別為:需要擷取的字串,從第幾個字元開始擷取,擷取幾個字元,字元編碼轉換(utf-8/gbk/big5)等編碼進行轉換

6樓:6星雨

/*擷取中英文混合字串*/

//二個英文本元對應乙個中文字元,$len針對中文數字個數

//flag=0 為無省略點 |

//flag=1 為有省略點

function ccstrleft($str,$len,$flag=0)'.

'((?:[\x00-\x7f]|[\xc0-\xff][\x80-\xbf]+)).*#s',

'$1',$str);

//判斷有幾個字母

$str2=str_split($str1);

$count=0;

$len1=0;

foreach($str2 as $k=>$v)

}$len=$len+($len1-1);

$str=preg_replace('#^(?:[\x00-\x7f]|[\xc0-\xff][\x80-\xbf]+)'.

'((?:[\x00-\x7f]|[\xc0-\xff][\x80-\xbf]+)).*#s',

'$1',$str);

if($flag==1)

return $str;}

7樓:xiaoxinxin嗄嗄

$v=iconv('gb2312','utf-8',$str);

//或者將gb2312與utf-8反過來

8樓:匿名使用者

利用php內建方法mb_substr擷取不亂碼;

1、gbk編碼擷取示例:

$str = '我是誰'; //gbk編碼的字串echo mb_substr($str, 0, 1, 'gbk'); //輸出 我

mb_substr方法比substr多乙個引數,用來指定字串編碼。

2、utf-8編碼擷取示例:

[code]

$str = '我abc是誰'; //utf-8編碼的字串echo mb_substr($str, 0, 2, 'utf-8'); //輸出 我a

[/code]

中英混合也完全沒有問題。

php怎麼把經過utf-8編碼的中文字元轉換成正常的中文

9樓:匿名使用者

首先,baiutf-8編碼的中文字du符也是正常的。zhi如果你認為 gb2312 才「正常」dao, 可以這樣版:

$utf8_str = '中文'; // 注意這兒得是權 utf-8 編碼的字串

$gb2312_str = mb_convert_encoding($str, 'gb2312', 'utf-8');

%e5%90%89%e6%9e%97

有人已經回答了,

用 urldecode 就行了。

10樓:

<?

$a=urldecode("%e5%90%89%e6%9e%97");

$a=mb_convert_encoding($a, 'gb2312', 'utf-8');

echo $a;

?>

11樓:匿名使用者

用mb_convert_encoding函式轉換,你要說明就看下面:

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

converts the character encoding of string str to to_encoding from optionally from_encoding

也可以用iconv,但這個函式有些情況會出錯你這個不是版utf-8編碼,用urldecode來解碼,你試試權

12樓:匿名使用者

$file="你的字";

$text = mb_convert_encoding("$file", "gbk", "utf-8");

就是這樣。

在echo出來 $text

php中使用substr擷取字串出現中文亂碼問題該怎麼辦

13樓:地瓜說機

給你乙個我自己寫的字串擷取類,不會出現亂碼。

function displaystr($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 join('',$r);

}echo $str="你在找php擷取字串的函式嗎?測試一下吧,且聽風吟福利吧的位址是3tii.com,你試試看會不會出現亂碼!不區分大小寫,不區分數字字母中文";

echo '';

echo displaystr($str,3,8);

14樓:天色無雙

涉及包含中文的字串處理,需要使用多位元組字串(mbstring)處理函式,先要在php.ini裡開啟mbstring擴充套件。

擷取字串就用mb_substr函式,使用時注意 一定需要指定編碼。例如

echo mb_substr("歡迎加入印特學院",4,4,"utf-8");

希望能夠幫助到你,有問題隨時交流。

15樓:豬二爺

可以用mb_substr來進行擷取

16樓:一條不鹹滴鹹魚

substr是按位元組擷取的 中文用mb_substr。。。。。。。

php中使用substr擷取字串出現中文亂碼問題該怎麼辦

17樓:育知同創教育

substr --- 取得部份字串

語法 : string substr (string string, int start [, int length])

說明 :

substr( )傳回 string的一部份字串,由引數 start和 length指定。

如果 start是正數,傳回的字串將會從 string的第 start個字元開始。

example :

?<?php

$rest = substr ("abcdef", 1); // returns "bcdef"

$rest = substr ("abcdef", 1, 3); // returns "bcd"

?>

如果 start是負數,傳回的字串將會從 string結尾的第 start個字開始。

example :

?<?php

$rest = substr ("abcdef", -1); // returns "f"

$rest = substr ("abcdef", -2); // returns "ef"

$rest = substr ("abcdef", -3, 1); // returns "d"

?>

如果有給予引數 length而且是正數時,傳回的字串將會從 start傳回 length個字元。

如果有給予引數 length而且是負數時,傳回的字串將會結束於 string結尾的第 length個字元。

example :

?<?php

$rest = substr ("abcdef", 1, -1); // returns "bcde"

?>

對於英文沒有問題,我們測試乙個中文

<?php

$rest = substr ("中國人", 1, -1); // returns "fdsafsda" 就是亂碼了

?>

這種擷取字元的結果,肯定不是我們想要的結果,這種出現php substr中文亂碼的情況,可能會導致程式無法正常執行。解決辦法主要有兩種:

一、使用mbstring擴充套件庫的mb_substr()擷取就不會出現亂碼了。

可以用mb_substr()/mb_strcut()這個函式,mb_substr()/mb_strcut()的用法與substr()相似,只是在mb_substr()/mb_strcut最後要加入多乙個引數,以設定字串的編碼,但是一般的伺服器都沒開啟php_mbstring.dll,需要在php.ini在把php_mbstring.

dll開啟。

<?php

echo mb_substr("php中文字元encode",0,4,"utf-8");

?>

php中使用substr擷取字串出現中文亂碼問題該怎麼辦

18樓:匿名使用者

substr()適合擷取英文本串;

擷取中文字串,並且可以設定字符集,可以用mb_substr()<?php

$str = mb_substr("你要擷取的帶中文的字串",0,4,"utf-8");

結果是:     string(12) "你要擷取"

19樓:

試試這個函式mb_substr( $str, $start, $length, $encoding )

$str,需要截斷的字串

$start,截斷開始處,起始處為0

$length,要擷取的字數

$encoding,網頁編碼,utf-8,gb2312,gbk

如何擷取網頁裡的音訊,如何擷取網頁中的音訊?

很多音訊都是因為保護版權而採取了一些措施防止 一般的收聽音訊後,這個檔案都儲存在ie臨時資料夾裡面,這是很容易找到的 但是收藏的價值需要考慮,有的 音訊別壓縮得很厲害,如果是網路收聽或者 等裝置收聽還基本可以 但用於其他方面因之就衰減了很多,不建議使用 最好使用無損音訊 具體方法 收聽要儲存的音訊檔...

擷取的英語翻譯擷取用英語怎麼說,取樣的英語翻譯取樣用英語怎麼說

回答和翻譯如下 擷取。intercept.剪下 用英語怎麼說 很負責的高速樓主 沒有這個單詞 因為英文裡以x為開頭的單詞本來就很少 shear scissoring trimming crop cut.剪貼cut 複製copy 貼上paste ctrl x鍵的操作,可剪貼 ctrl c鍵的操作,可複...

php的介紹及php有什麼優勢,php的介紹及Php有什麼優勢?

php是一種解釋語言,可以編寫各類資料處理 資料庫操作的應用,主要用在 開發。php的優點最明顯的是兩個方面 和asp相比其相容性較好,asp只能在windows機器上使用,php可以適用於各類作業系統的伺服器,特別適合在網際網路廣泛運用的linux系統。和jsp相比其入門容易,學習簡單,一般都可以...