我有一个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