2009-09-02 152 views
1

可以說,我需要得到一些H1,H2或H3標籤正則表達式查找字符串中的字符串中的字符串

/<[hH][1-3][^>]*>(.*?)<\/[hH][1-3]>/ 

這如果用戶決定採取理智的方式來頭的偉大工程中的字符串:

<h1>My Header</h1> 

但知道我的用戶,他們想要大膽,斜體,下劃線h1的。他們有編碼泥潭tinyMCE來幫助他們做到這一點。 TinyMCE的將輸出:

<h1><b><span style='text-decoration: underline'><i>My Hideous Header</i></span></b></h1> 

所以我的問題是:

我如何得到一個字符串H1 H2或H3裏面,然後周圍的其他標記,以及任何數量的內部?

謝謝, 喬

+1

這個怎麼樣? '

我的 Hide 012標題

'你想檢索完整的標題字符串及其嵌入的''標籤嗎? – 2009-09-03 00:06:49

回答

1

如果您在PHP是您可以使用您正則表達式:

/<[hH][1-3][^>]*>(.*?)<\/[hH][1-3]>/

然後通過用strip_tags通過捕獲結果()函數來獲取裏面擺脫所有的瘋狂。

如果你不在PHP上,你可以通過regexp replace來傳遞結果去除標籤。類似於用空字符串替換 /<\/?[^>]+?>/

3
/<(h[1-3])[^>]*>(?:.*?>)?([^<]+)(?:<.*?)?<\/\1>/i 

這不會是太難做出令人髮指打破它的情況下,因爲(我敢肯定,人們會告訴你)解析HTML是一種HTML解析器工作,而不是正則表達式,但它適用於您的特定情況和各種類似的情況。

+0

+1,特別是對於「不要使用正則表達式」的評論 – 2009-09-02 21:06:28

+0

+1,原因與simonn相同! – TrueWill 2009-09-02 23:34:04

-1

如果你只是想捕捉的最終文本嵌套你可以只落標頭標記內的所有標籤有:

/<([hH][1-3]).*>(.*?)<.*\/$1>/ 

未經檢驗的,但我認爲它應該工作。

+1

沒有。 '(。*?)'被允許不匹配,並且感謝它前面的貪婪的'。*',這正是它所做的。 – 2009-09-03 04:08:57

相關問題