使用PHP反转FILTER_SANITIZE_SPECIAL_CHARS

5

这是一个简单的问题,但我是个新手,请原谅我的简单问题。

是否有一种简单的方法来撤销FILTER_SANITIZE_SPECIAL_CHARS过滤器的效果?如果没有,你会怎么做才能撤销它的影响。请不要只说正则表达式,而要实际提供建议。明确一点,我不是想反转字符串。

以下是一些示例代码,以帮助解释我想要做的事情:

/*** a string with tags ***/
$string = "<li><script>!@#$%^&*\n\'#foo</script><br><p /><li />";

/*** sanitize the string ***/
$x = filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS);
echo $x . "<br>\n";

/*** I want this to output <li><script>!@#$%^&*\n\'#foo</script><br><p /><li /> ***/
echo htmlspecialchars_decode($x);
/*** instead it outputs: &#60;li&#62;&#60;script&#62;!@#$%^&#38;*&#10;\&#39;#foo&#60;/script&#62;&#60;br&#62;&#60;p /&#62;&#60;li /&#62; ***/

非常感谢您提供任何有关IT技术的想法,我们将不胜感激。提前致谢!


1
你尝试过使用htmlspecialchars_decode()吗?这可以让你至少完成大部分工作,根据转义的数据类型可能已经足够了。 - jedwards
@jedwards 那并没有做任何事情。你只是使用它作为 htmlspecialchars_decode($myString) 吗? - Brett
$out = htmlspecialchars_decode($in); echo $out; -- 大致上是这样的。过滤后的文本长什么样? - jedwards
2
还要考虑使用html_entity_decode()函数。 - jedwards
1
@jedwards 的回答真是太棒了,我简直无法相信在我的所有谷歌搜索中都找不到它。如果你把它作为答案,我会标记它为已解决。非常感谢我的朋友。 :-) - Brett
1个回答

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接