PHP从字符串中删除垃圾

时间:2013-12-17 13:08:04

标签: php string utf-8

我遇到了一个问题,我正在使用一个非常基本的RTE来获取用户输入,并在使用RTE提供的功能发布时从字符串中修剪垃圾。我正在使用http://premiumsoftware.net/cleditor

用户提交数据后,我用PHP解析它并删除不需要的内容。大多数用户都是Linux / Mac用户,他们通常会复制电子邮件/ word文档中的内容并将其粘贴到RTE中,从而导致大量垃圾。

我们还需要允许使用任何语言的所有UTF8字符。

说完这一切,请查看此图片

enter image description here

正如您所看到的,在颜色注释中没有可见的特殊字符,如果我从MYSQL复制它并将其粘贴到任何地方,就不会有垃圾。但是,如果我将值转换为HEX,你可以看到,那里有一个奇怪的字符。以黄色突出显示。

有没有办法过滤这类问题。它导致我的PDF生成脚本停止工作

2 个答案:

答案 0 :(得分:8)

这不是“垃圾”,它是以UTF-8编码的行分隔符U+2028。如果你用ASCII / Latin-1解释它,它看起来就像垃圾一样,当用错误的字符集解释时,一切看起来像垃圾。没有什么可以删除。如果您决定要删除某些多余的字符,请随意执行此操作。但它们是原始内容的一部分,而且它们本身并没有“错误”,所以在这里没有一般建议。

如果您的PDF生成器窒息,请找出原因。也许它通常不能正确处理Unicode,在这种情况下,如果你想用它支持Unicode,你需要修复它。如果它确实有特定的字符,它就会窒息(这很奇怪),那么你需要找出这些字符的确切位置并剥离它们。

答案 1 :(得分:0)

正如你所说它打破了你的PDF生成脚本,因为这是一个相当普通的控制字符(U + 2028)。

我要说首先要检查的一件事是你的PDF脚本有多严格或可能是错误配置,关于它应该或可以使用的字符编码。

- 编辑 - deceze在他的编辑中说: - - )