2013-12-17 85 views
4

刪除垃圾我堅持的一個問題,我使用的是非常基本的RTE來獲取用戶輸入,並修剪字符串中的垃圾,正在使用提供RTE的功能發佈時。我使用http://premiumsoftware.net/cleditorPHP從字符串

用戶後提交的數據,我用PHP解析它並刪除不需要的內容。大多數用戶是Linux/Mac用戶,他們通常從電子郵件/ word文檔複製內容並將其粘貼到RTE中,導致大量垃圾。

我們還需要允許從任何語言中的所有字符UTF8。

說這一切,請檢查該圖像

enter image description here

正如你所看到的,在顏色的筆記沒有特殊字符可見,如果我從MySQL複製此並將其粘貼在任何地方,不會有垃圾。但是如果我將這些值轉換爲HEX,你可以看到一個奇怪的字符。用黃色突出顯示。

有沒有什麼辦法來過濾這類問題。它導致我的PDF生成腳本停止工作

+1

爲什麼downvote?它是一個真正的編程問題和問題 –

+1

不明白downvotes要麼 – davidkonrad

+0

和我得到了所有3在幾秒鐘:( –

回答

8

這不是「垃圾」,它是以UTF-8編碼的Line Separator字符U+2028。如果你用ASCII/Latin-1解釋它,它看起來就像垃圾,當用錯誤的字符集解釋時,所有東西看起來都是垃圾。沒有什麼可以移除的。如果您決定要刪除某些多餘的字符,請隨時這樣做。但是它們是原始內容的一部分,並且它們本身並不是「錯誤」的,所以在這裏沒有一般的建議。

如果您的PDF生成器扼殺它,找出原因。也許它通常不能正確處理Unicode,在這種情況下,如果你想要支持Unicode,你需要修復它。如果它確實有特定的字符(這將是奇怪的),那麼你需要弄清楚這些字符是什麼,並將它們去掉。

+0

爲什麼十六進制編輯顯示e280? – exussum

+0

@user因爲'E280A8'是該字符的UTF-8字節編碼。 – deceze

+0

如果你真的要刪除這個字,你可以按照http://stackoverflow.com/questions/1176904/php-how-to-remove-all-non-printable-characters-in-a-string – klipach

0

正如你說,它打破了你的PDF生成腳本,因爲這是一個相當正常的控制字符(U + 2028)。

我想說一兩件事,首先檢查的是如何嚴格或錯誤地配置也許你的PDF腳本,關於字符編碼(S)應當或可以使用。

- 編輯 - deceze在他的編輯說 - --)