2013-12-17 52 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在他的编辑说 - --)