2010-04-08 69 views
2

遇到了一個小問題,我的客戶將Word中的內容粘貼到CMS中的小文本編輯器中。清理PHP中令人討厭的字符

雙引號重新編碼,看起來像某種形式的UTF。

任何想法,如果我可以去除/替換這些使用PHP,當他們顯示出mySQL表。

這裏是鏈接到唾棄狡詐角色的頁面,你可以看到導致頭痛的'厄運黑鑽石'。

http://linq.milkbarstudios.com/news_detail.php?id=3

任何建議,將極大地接受!

回答

0

我實際上是在尋找PHP來代替狡猾的角色。

到底

我發現了這一點,這完全修復它:

$output = preg_replace('/[^(\x20-\x7F)]*/','', $output); 
+2

這不是一個好的解決方案。您銷燬所有非ASCII字符。聰明的引號'''不是一個「狡猾」的字符,它是成千上萬的其他人無法正常工作的完全正常的Unicode字符。 – bobince 2010-04-08 11:01:19

+0

同意。我們只希望沒有一個來自美國以外的人在這個頁面上摔倒...... – 2010-04-08 12:17:32

+0

任何人都可以爲我提供更好的解決方案嗎?而爲了記錄,我來自英國。 – 2010-04-08 12:35:00

2

這聽起來像你的代碼中的錯誤。處理文本數據時,必須始終考慮編碼並根據需要來回轉換。因此,當瀏覽器向您發送UTF-8時,您必須在將字符串發送到數據庫之前解碼該字符串(MySQL在文本列中支持UTF-8)。這樣,原始文本將被保留。當然,當你爲瀏覽器渲染頁面時,你必須這樣做(將字符集設置爲UTF-8,確保實際發送UTF-8等)。

+0

還有的網站,但沒有在標題暗示的字符集上的UTF8元標記。 – 2010-04-08 10:09:57

+0

@Aaron我不是一個PHP開發人員,我不得不從其他人那裏選擇這個作爲一個幫助。我可以在ColdFusion中做到這一點,沒有任何問題,但是我有時間找到一個修復程序,因此在這裏的帖子和下面的修補程序都是我的。 我想要做的就是刪除/替換任何使我的頁面無法通過W3C驗證檢查的字符,並且2.停止顯示爲黑色菱形。 任何指針,如果我需要添加一些東西到我的基頁代碼,無論是PHP的問題,或更糟糕的東西將更多的讚賞。 – 2010-04-08 12:40:37

+0

這是一個編碼問題。框架仍然允許在不請求數據編碼的情況下接收或發送數據,這是非常悲慘的。因此,要真正解決問題,必須確保您使用正確的編碼讀取數據,並且使用正確的編碼手動發送數據。 ...根據PHP手冊(http://www.php.net/manual/en/intro.unicode.php)PHP不支持unicode。甜。 – 2010-04-08 14:02:24