2012-04-21 19 views
-1

我正在提取標籤的嵌套內容。我寫了一個正則表達式,我的本地機器上完美的作品(WAMP)PHP版本5.3.8,多字節正則表達式(oniguruma)版本 - 4.7.1PHP的正則表達式匹配配對標籤,但不是不配對標籤

$tagname = 'mytag'; 
$pattern = "@<$tagname(?:\s.*?!/)?>(.*?)</$tagname\s*>@s"; 

但同樣的正則表達式不上正常工作我帶有PHP Version 5.2.11配置的實時計算機,Multibyte regex(oniguruma)版本4.4.4 和Multibyte regex(oniguruma)回溯檢查=開啓。

請修改這個正則表達式,它開始直播現場的工作有所幫助。

這個正則表達式匹配<mytag></mytag>並且它不匹配<mytag />

更新:感謝您的建議和對策。

我更新的正則表達式一點,它爲我工作。只要你想得到內部內容(嵌套標籤和文本),就可以使用這個正則表達式。不管你的標籤如何安排,也不管它有多少屬性。

+0

如果這是你在試圖解析,可以考慮使用一個體面的XML解析器有些像XML的語言。 – Gumbo 2012-04-21 07:40:59

+0

贊同Gumbo。我是正則表達式的忠實粉絲,除了最簡單的情況外,如果你使用XML或HTML,如果你使用[SimpleXML](http:// jp2.php.net/manual/en/book.simplexml.php)爲你解析。 [使用XML正則表達式提取]的 – 2012-04-21 11:47:04

+0

可能重複(http://stackoverflow.com/questions/10250381/extracting-from-xml-using-regex) – mario 2012-04-21 12:47:25

回答

0

你必須somwhere的說,是這樣的:

(?:</$tagname>|/>) 
+0

感謝將它改爲'$ pattern =「@<$ tagname(?:\ s!/.*?)?>(。*?) @ s」;' .. – Shahid 2012-04-21 07:52:30

相關問題