PHP过滤表单输入

时间:2009-12-15 15:06:05

标签: php forms filtering validation

我确定有人已经覆盖了这个,但我没有在网站的快速搜索中找到它。现在我正在尝试从WYSIWYG过滤一些输入,这样它就会删除如下字符:¢©÷μ·¶±€€§¥™但保留HTML字符。我已经尝试了htmlentities和htmlspecialcharacters,但似乎仍然留下了这些角色。任何已经存在的方法,或者任何人有一个很好的正则表达式来处理这个?谢谢!

4 个答案:

答案 0 :(得分:1)

如果您使用的是PHP> 5.2.0 Filter可能会有所帮助。

答案 1 :(得分:0)

正则表达式应该起作用:

$ text = preg_replace('/ [¢©÷μ·¶±€€®§™¥] * /','',$ text);

你也可以替换这样的项目:

$ bad = array('©','®'); $ good = array('©','®');

$ text = preg_replace($ bad,$ good,$ text);

答案 2 :(得分:0)

您是否尝试过htmlentities()功能?试试这样:

$text = htmlentities($text);

您可以在http://php.net/manual/en/function.htmlentities.php查看其他一些可选参数。您可能必须至少设置quote_stylecharset

答案 3 :(得分:0)

如果您想完全删除这些字符,而不是仅仅将它们转换为HTML实体,那么

htmlentities()htmlspecialchars()将不适合您。

修改

我刚注意到,有一次你说你想保留HTML实体。如果是这种情况,请使用htmlentities() !!它会将所有这些符号转换为它们的html实体等价物。如果您回复它,您仍然会看到您尝试删除的字符,但如果您查看源代码,则会看到&name;格式化的实体。


你可能需要使用正则表达式,尽管很难过。大多数PHP函数都试图以一种或另一种格式为您保留这些字符。令人惊讶的是,至少我知道它们不是去除它们的功能!