2009-04-17 154 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)); 
?>