2011-07-04 161 views
2

我要做到以下幾點:的preg_replace() - 除去包含HTML標籤內的字符串

我有一個數據庫中的字符串,它是存儲HTML標記插入那裏的時候,因此,例如,我可能有以下字符串:

 <h2>Hello World</h2> 
    <p>Cras mattis justo vitae diam sagittis ut porta eros aliquam. 
     Aenean vel nisi et nisl adipiscing blandit. 
     Donec tempor dictum risus a feugiat. 
     Nunc ac purus lectus. Morbi in suscipit ipsum. 
     Ut eu odio eu massa sollicitudin interdum. 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
     Maecenas fermentum hendrerit imperdiet.</p> 

這是一個字符串,我可能會在數據庫中,我要放棄它的<h2>部分。

現在,據我所知,在這裏做一個preg_replace()可以完成這項工作,但是我需要尋找哪種字符串模式?

非常感謝。

+0

解析可能會更好,然後替換:http://simplehtmldom.sourceforge.net/ – jantimon

+0

如果你的HTML是比較簡單的,正則表達式也許能夠應付它。對於一般的HTML,儘管你應該看看使用解析器而不是正則表達式來處理它:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – tvanfosson

+0

不要使用simplehtmldom – dynamic

回答

1

要真正回答你的問題的替代方法正則表達式是:

/<h2>(.+?)<\/h2>/ 

然而,正如評論指出,這是不是最好的方法! :)

1

尼斯通過邁克爾賴特

使用strip_tags()函數解決此問題的另一種方法。

$patern = '<p>'; 
    $str = '<h2>Hello World</h2><p>Cras mattis justo vitae diam .</p>'; 
    strip_tags($str,$patern); 

此代碼生成以下

pattrn
'Hello World<p>Cras mattis justo vitae diam .</p>' 

這裏$包含的標籤列表仍然留在你的數據。 strip_tags()消除了除了$ patern之外的所有標籤。

reference from php manual

相關問題