2009-04-17 108 views
9

在我们开始之前,strip_tags()不起作用。php正则表达式删除HTML

现在,

我已经得到了需要被解析的一些数据,问题是,我需要摆脱所有已经格式化很奇怪的HTML。 标签是这样的: (注意空格)

<p> blah blah blah </p > < a href= " link.html " > blah blah blah </a> 

所有我一直想不工作的regexs,我不知道有足够的了解正则表达式格式化,以使他们的工作。我不在乎保留标签内的任何东西,如果可能的话,宁愿删除链接中的文本。

任何人有什么想法?

(我真的需要坐下来学习正则表达式一天)

回答

26

是否

preg_replace('/<[^>]*>/', '', $content) 

工作?

+1

而不是``你可以使用'+',因为``你也将取代`<>`如果在文本中找到。 – machineaddict 2014-09-16 09:30:25

2

解决方案,这傻瓜证明,但会为你发布什么工作:

s/<[^>]*>//g 
1

奇怪的是格式化?这是有效的HTML,但对吗?在那种情况下,我不会用正则表达式来触碰它。这种情况如何出现问题以及为什么这是一个坏主意的例子是军团。相反,我会使用HTML Tidy来清理不必要的空白。

+0

我打算发布这个,但太累了,无法理解。 +1。 – strager 2009-04-17 02:59:39

+0

当我通过HTML Tidy运行字符串时,它将< and >标志更改为< and >,因此strip_tags()仍然不适用于这些标志。我正在使用tidy_parse_string()和tidy_repair_string()。有没有另一个功能可以工作,我没有看到? – Me1000 2009-04-17 03:18:49

-2

http://ca3.php.net/strip_tags可能是您需要的。

+0

strip_tags()不起作用(正如我的问题的第一行所指出的那样),因为PHP由于格式化无法将标记识别为HTML。这也是我的第一个想法。 – Me1000 2009-04-17 03:28:46

-2

试试这个,让我知道。

<?php 
$text = '<p> blah blah blah </p > < a href= " link.html " > blah blah blah</a>'; 
echo strip_tags($text); 
echo "\n"; 
echo strip_tags($text, '<p><a>'); 
?> 
+0

strip_tags()不起作用(正如我的问题的第一行所述),因为PHP无法将标记识别为HTML。这也是我的第一个想法。 – Me1000 2009-04-17 03:27:43

12

strip_tags()会工作,如果你对一个变量使用html_entity_decode()strip_tags()

<?php 
$text = '<p> blah blah blah </p > < a href= " link.html " > blah blah blah</a>'; 
echo strip_tags(html_entity_decode($text)); 
?>