用preg_replace替换所有html代码

时间:2012-06-19 08:23:35

标签: php regex

我想将所有html代码替换为空白区域。我想我应该使用 preg_replace 函数,但我不知道如果html代码以这种方式显示,我应该怎么做:

”
β

$text="β something ” test..."

$text=preg_replace("&# [what should be here?] ;", " ", $text);

echo $text;
result =  something  test...

我认为它应该只是数字,因为我在这里只发现数字:http://www.ascii.cl/htmlcodes.htm

4 个答案:

答案 0 :(得分:3)

你可以看看strip_tags,它正是这样做的。然而,这些不是HTML代码,它们被称为HTML实体。

匹配您想要的regex如下所示:

(&#.+?;)

非常简单,在&#之前查找;然后重复的字符。

编辑:正如Qtax指出的那样,他们不必是数字。 Dot匹配所有。

答案 1 :(得分:2)

HTML字符引用可以是defined in two ways。假设您只想替换数字字符引用,则需要一个解析这些格式的正则表达式:

  • &#D;其中D是十进制数
  • &#xH;其中H是十六进制数

正在处理两者的正则表达式:

/&#(\d+|x[\da-f]+);/i

答案 2 :(得分:0)

如果您要替换所有HTML实体,例如&foo;,您可以使用以下内容:

preg_replace('/&(?:[a-z]+|#x[\da-f]+|#\d+);/i', ' ', $text);

如果要解码它们,请使用html_entity_decode

答案 3 :(得分:0)

&<something>;是HTML实体的语法。如果要替换所有这些,请使用此正则表达式:

preg_replace('/&.*?;/', '', $subject); // from ampersand till the next semicolon

它将使用空字符串替换所有HTML实体,包括&auml;&x20;和其他