2011-09-21 84 views
0

我有這樣的文字...如何替換字符串中的亂碼字符?

“I’米並不想成爲可信的,â€大衛笑着擴大」

承認......我想刪除那些奇怪的字符,我已經試過str_replace(),但它不能正常工作。

任何想法?

+4

我很確定有一個潛在的問題,你應該修復。 –

回答

2

您在不同的編碼,然後它的源編碼可能已經處理的文本。

因此,如果文本是UTF-8,那麼當前沒有將其作爲UTF-8處理。最簡單的方法是發送一個報頭,如...

header('Content-Type: text/html; charset=UTF-8'); 

您還可以添加meta元素,但要確保它是你head元素的第一個孩子。

您需要修復源代碼,而不是稍後嘗試修補它(這將永遠不會工作正常)。

+0

難道它不是也是顯示頁面的「內容類型」嗎? –

+0

@JaredFarrish:這將處理不同編碼的文本:) – alex

+0

我不理解您的評論...從Word文件複製/粘貼時,我遇到與OP相同的問題,並通過更改(通常)到''。 –

2
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
... 
</head> 

不同的來源通常有不同的編碼,因此您需要指定您在其中呈現視圖的編碼。 Utf-8是最受歡迎的,因爲它涵蓋了所有的ASCII和許多其他語言。

php的utf8_(de)編碼將iso-8859-1轉換爲utf-8,而相反和常規的字符串操作函數不是多字節 - (utf-8可以)字符意識。您可以使用特定於mb_strings的函數,也可以使用某些參數啓用編碼。

//評論,如果我錯了

+0

您應該考慮描述_why_此代碼將有所幫助。是的,它可能會解決問題,但問題的措詞是,他們不知道他們需要此修復;解釋他們爲什麼做。 –

+0

他特意使用了utf標籤,但你是對的。 – anonomg1234

0

嘛,你使用,你應該使用(你應該使用UTF-8編碼),不同的字符編碼,所以我想改變這種狀況,而不是試圖只需使用快速修復方法即可解決問題(整體來說,您會遇到更少的問題)。


如果你真的想用PHP修復它,你可以使用ctype_alpha()函數;你應該可以這樣做:

$theString = "your text here"; // your input string 

$newString = ""; // your new string 
$i = 0; 
while($theString[$i]) // while there are still characters in the string 
{ 
    if(ctype_alpha($theString[$i]) // if it's a character in your current set 
    { 
     $newString .= $theString[$i]; // add it to the new string, increment pointer, and go to next loop iteration 
     $i++; 
     continue; 
    } // if the specific character at the $i index is an alphabetical character, add it to the new string 
    else 
    { 
     $i++; 
    } // if it's a bad character, just move the pointer up by one for the next iteration 
} 

然後使用$ newString,但是你想。真的,只是改變你的字符編碼,而不是這樣做。您希望編碼在整個項目中保持一致。