php - 使用strip_tags函数比使用函数更安全?

  显示原文与译文双语对照的内容
0 0

当字符串包含'小于'和'大于'标记时,使用 strip_tags PHP函数时遇到一些问题。 例如:

如果我这样做:


strip_tags("<span>some text <5ml and then> 10ml some text </span>");

我将得到:


some text 10ml some text

但是,我很明显想得到:


some text <5ml and then> 10ml some text

是的,我知道我可以使用 & lt和 & gt ;但是,我没有机会将这些字符转换为HTML实体,因为数据已经存储在我的示例中。

我要寻找的是一种解析HTML的聪明方法,以便去掉真正的HTML标签。

由于TinyMCE用于生成数据,我知道在任何情况下可以使用哪些实际的html标记,因此 strip_tags($string, $black_list) 实现比使用更有用。 strip_tags($string, $allowable_tags)

任何 thoughs?

时间: 原作者:

0 0

作为一种古怪的解决方法,你可以过滤非html括号:


$html = preg_replace("# <(?![/a-z]) | (?<=s)>(?![a-z]) #exi","htmlentities('$0')", $html);

应用 strip_tags() 请注意,这对于你的具体示例和类似案例是如何工作的。 它是一个正则表达式,它具有一些启发性,而不是人工intellegince来从非转义角括号中。

原作者:
0 0

如果要有"大于"和"小于"标记,则需要对它的进行转义:

&gt; 是>

&lt; 是 <

请参见 比如: http://www.w3schools.com/html/html_entities.asp

原作者:
0 0

而不是 strip_tags ( ),只需使用 htmlspecialchars() 。

http://php.net/manual/en/function.htmlspecialchars.php

原作者:
...