我有一個PHP的Web應用程序/工具,人們最終的複製粘貼數據到。數據最終變成XML,一旦保存,某些字符會產生非常奇怪的字符。我不確定在複製粘貼之前,「」是否看起來像這樣。它可能剛剛被這樣解釋。它可能只是一個漫長的「 - 」。無論如何,所有這些角色都很奇怪。有沒有一種方法可以輕鬆地將它們去除?我怎樣才能去掉奇複製粘貼的字符,如:①™€
2
A
回答
1
這是因爲PHP採用8位編碼,但你的數據是最有可能使用UTF-8。你會發現Joel's article on Encoding非常有啓發性。
而對於簡短的回答儘量只編碼它在UTF-8
<?php
$text = $entity['Entity']['title'];
echo 'Original : ', $text."<br />";
$enc = mb_detect_encoding($text, "UTF-8,ISO-8859-1");
echo 'Detected Encoding '.$enc."<br />";
echo 'Fixed Result: '.iconv($enc, "UTF-8", $text)."<br />";
?>
1
它很可能是你的情況加入白名單,而不是黑名單更容易;即列出可接受的字符並剝去其餘字符。爲此,您可以輕鬆地使用preg_replace
:
$str = preg_replace($str, "/[A-Za-z0-9'-._\(\)/");
|
V
add more chars here
1
當你看到一個字符對開頭的重音「A」或「a」,它通常意味着你看到一個字符,其實際編碼爲iso-8859-1,由認爲其顯示utf-8的軟件顯示。
如果你打算讓人們使用不支持XML的工具在XML文檔中修改文字,可能是你最終會與ISO-8859-1編碼的字符。如果文件開頭的XML聲明存在,並且說編碼是iso-8859-1,那應該沒問題。但是,如果沒有XML聲明,或者聲明中的編碼是utf-8,那麼最終會得到損壞的數據。
你詢問有關如何修復數據,但是當您遇到數據損壞重點應該永遠是預防,而不是修復。
相關問題
- 1. 我怎樣才能使不選擇「複製/粘貼」的UITextView
- 2. 我怎樣才能去掉像在PHP中的字符串?
- 3. 我怎樣才能複製這與CSS?
- 4. 我怎樣才能從字符串
- 5. 我怎樣才能
- 6. 我怎樣才能控制器功能
- 7. WPF複製/粘貼功能
- 8. 正則表達式 - 我怎樣才能排除表達與複製的字符
- 9. 複製並粘貼外來字符
- 10. 屬性字符串失去粘貼板粘貼中的附件
- 11. 我怎樣才能複製一行數據,並將其粘貼到一個偏移量
- 12. 我怎樣才能將幾個貼圖貼在一起?
- 13. 我怎樣才能恢復在android
- 14. 當我複製和粘貼
- 15. 我怎樣才能通過這樣的字符串http.post angular2
- 16. 我怎樣才能從字符串中獲得幾個字符?
- 17. 我怎樣才能用連字符分割這個字符串?
- 18. 我怎樣才能限制我的文字只有200個字符?
- 19. 我怎樣才能從給定的字符串提取數字
- 20. 斷點已劃掉,我怎樣才能使它們有效?
- 21. 我怎樣才能批量打字?
- 22. 我怎樣才能與字母分頁
- 23. 我怎樣才能限制在我的CC細節上的字符編號android
- 24. 我怎樣才能在Magento
- 25. 我怎樣才能笨
- 26. 我怎樣才能在C++
- 27. 我怎樣才能在Python
- 28. 我怎樣才能從DataGridView
- 29. 我怎樣才能在Castle.Windsor
- 30. 我怎樣才能得到
我希望我能接受多個答案......剛一說明,我使用CakePHP所以我用了上面的回答,用消毒庫混合,基本上消毒的所有數據beforeSave,然後創建了一個名爲unsanitize這樣當功能人們編輯他們沒有看到所有這些奇怪的html實體... – Parris 2011-03-16 23:36:33