我有一個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. 我怎樣才能用較少的冗餘/複製粘貼來寫這個?
- 4. 我怎樣才能去掉「〜」在.xcodeproj文件與SVN
- 5. 我怎樣才能複製這與CSS?
- 6. 我怎樣才能複製使用
- 7. jquery:我怎樣才能複製元素?
- 8. 我怎樣才能複製串或STR
- 9. 怎樣才能進去控制器
- 10. 我怎樣才能從字符串
- 11. 我怎樣才能子串字符串?
- 12. 我怎樣才能打印字符值?
- 13. 我怎樣才能從字符串
- 14. 我怎樣才能進去界限
- 15. 我怎樣才能複製和深度複製[] [] []結構
- 16. 我怎樣才能
- 17. 我怎樣才能
- 18. 我怎樣才能
- 19. 我怎樣才能
- 20. 我怎樣才能控制器功能
- 21. 正則表達式 - 我怎樣才能排除表達與複製的字符
- 22. WPF複製/粘貼功能
- 23. VBA複製粘貼字符串搜索
- 24. 複製並粘貼外來字符
- 25. 我怎樣才能簡單地複製我的代碼?
- 26. 我怎樣才能複製一行數據,並將其粘貼到一個偏移量
- 27. 屬性字符串失去粘貼板粘貼中的附件
- 28. 我怎樣才能將幾個貼圖貼在一起?
- 29. 我怎樣才能恢復在android
- 30. 我怎樣才能恢復使用PHP
我希望我能接受多個答案......剛一說明,我使用CakePHP所以我用了上面的回答,用消毒庫混合,基本上消毒的所有數據beforeSave,然後創建了一個名爲unsanitize這樣當功能人們編輯他們沒有看到所有這些奇怪的html實體... – Parris 2011-03-16 23:36:33