我正在接受来自提要的字符串以在屏幕上显示,该字符串可能包含也可能不包含我想要过滤掉的一些垃圾。我根本不想过滤普通符号。

我想要删除的值如下所示:�

我只想删除这个。相关技术是PHP。

建议表示赞赏。

有帮助吗?

解决方案 2

感谢您的答复,各位。不幸的是,这些提交了以下几个问题:

错出于明显的原因:

ereg_replace("[^A-Za-z0-9]", "", $string);

此:

s/[\u00FF-\uFFFF]//

也使用正则表达式的弃用EREG形式也当我转换为预浸因为范围只是过大,正则表达式处理没有工作。另外,还有一些在该范围内,将允许垃圾渗出通孔。

此建议:

  

这是一个编码问题;你不应该试图清除该伪造的字符,但明白,为什么你接受他们炒。

而有效的,是没有好,因为我没有在如何我接收到的数据进行编码的任何控制。它来自外部来源。有时有垃圾在那里,有时没有。

所以,我想出了解决办法是比较脏,但在没有东西更强大的,我只是接受所有标准的字母,数字和符号,并丢弃其余部分。

这似乎为现在的工作。该解决方案如下:

$fixT = str_replace("£", "£", $string); 
$fixT = str_replace("€", "€", $fixT);
$fixT = preg_replace("/[^a-zA-Z0-9\s\.\/:!\[\]\*\+\-\|\<\>@#\$%\^&\(\)_=\';,'\?\\\{\}`~\"]/", "", $fixT);

如果任何人有任何更好的想法,我仍然渴望听到他们的声音。欢呼声。

其他提示

这是一个编码问题;你不应该试图清除该伪造的字符,但明白,为什么你接受他们炒。

尝试让你的数据为Unicode,或使你的信息源提供者一个协议,你们都使用相同的编码。

您正在寻找是您的字体可显示的字形范围之外的字符。你可以发现你的字体可以显示,然后创建一个正则表达式,将一个空字符串替换高于任何有价值的东西的最大Unicode值。一个例子是

s/[\u00FF-\uFFFF]//

这会剥夺上述字符255任何东西。

这将是很难为你做,因为你没有什么过滤和什么保持了坚实的定义。通常情况下,字符显示为空的方块是什么,你正在使用的字体不具有字形,所以“显示了类似这样的东西:”的定义是可怕的不精确

这将是更好的为您到底是什么人物的的决定的有效(这始终是无论如何一个好办法,用任何类型的数据清理),丢弃一切,是不是其中之一。 PHP的过滤器功能是一种可能性要做到这一点,取决于复杂性和健壮性您所需要的水平。

如果您不能从饲料中的数据解决问题,需要过滤的信息,那么这可能帮助:

PHP5 filter_input是用于过滤输入串非常好,并且允许rlexability相当数量的

filter_input(input_type, variable, filter, options) 

您还可以过滤所有形式的数据在一个行,如果它需要相同的过滤:)

这里有一些较好的实施例和相关的详细信息:

http://www.w3schools.com/PHP/func_filter_input.asp

在PHP网站在这里有选项的详细信息:验证过滤器

看看此问题让你的字符串中每个字节的值。 (这假定多字节超载截止。)

一旦你的字节数,你可以用它们来确定这些“垃圾”字实际上是。这有可能是他们误解了字符串的编码,或在错误的字体,或别的东西显示它的结果。张贴在这里,人们可以进一步帮助你。

尝试这个:

  • 手动从源下载示例。
  • 打开它在 记事本++ 或其他高级文本编辑器(Linux 上的 KATE 对此很有用)。
  • 尝试更改编码并从一种编码转换为另一种编码。

如果您发现一个设置可以使字符正确显示,那么您需要使用该编码对您的网站进行编码,或者将其从该编码转换为您在网站上使用的任何编码。

您好友

     try this Regular Expression to remove unicode char from the string : 

     /*\\u([0-9]|[a-fA-F])([0-9]|[a-fA-F])([0-9]|[a-fA-F])([0-9]|[a-fA-F])/ 

谢谢, Chintu(prajapati.chintu.001@gmail.com)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top