【发布时间】:2011-06-27 03:03:34
【问题描述】:
当字符串包含“小于”和“大于”符号时,我在使用 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
是的,我知道我可以使用 <和 >,但我没有机会将这些字符转换为 HTML 实体,因为数据已经存储,如您在我的示例中所见。
我正在寻找的是一种解析 HTML 以便只删除实际 HTML 标记的聪明方法。
由于 TinyMCE 用于生成该数据,我知道在任何情况下都可以使用哪些实际的 html 标签,因此strip_tags($string, $black_list) 实现将比strip_tags($string, $allowable_tags) 更有用。
有什么想法吗?
【问题讨论】:
-
为什么你想要得到的东西很明显?
<anything是一个开始标签,因此应该被删除。所以strip_tags正在做你要求它做的事情...... -
我同意 ircmaxell。你的句子有三个标签,喜欢与否。您可能需要一种不同的方法。源数据的格式是否一致?无论如何,您可以在剥离标签之前将尖括号转换为它们的 HTML 编码等效项?
-
@ircmaxell 和@clifgriffin:我写“显然”是因为语义上这些标志不是标签的一部分,它们的意思是“小于 5 毫升”和“大于 10 毫升”。
-
@ircmaxell:我并不是说 strip_tags 有错误。我正在寻求正确的方法来获得我需要的东西。
-
@texai:我的意思是,对于计算机而言,您的要求并不明显。这对我们任何人来说都可能是显而易见的,但没有一种编程语言能让你摆脱澄清自己想法的负担。这就是我从那条评论中的意思。
标签: php dom html-parsing strip-tags