2014-11-21 47 views
-1

我有這些表達正則表達式:如何在標籤之間捕獲?

<b>hello</b> somthing else <b>world</b> 

我想:

[0] = hello 
[1] = world 
etc... 

的目標是不(無標籤的標籤之間捕捉)來解析DOM解析,但只使用簡單的正則表達式

+1

請寫下你做了什麼,而不是隻有你想要什麼 – sergio 2014-11-21 13:14:02

+1

JS是一種可行的方式嗎?它會讓事情變得更容易,更清潔。 (使用實際的DOM,不考慮整個HTML作爲單個字符串) – 2014-11-21 13:17:08

+2

用正則表達式解析HTML是[Bad IDEA](http://stackoverflow.com/a/1732454/2370483) – Machavity 2014-11-21 13:19:37

回答

0
$subject = '<b>hello</b> somthing else <b>world</b>'; 

$pattern = '/<\D>[a-z]{1,}<\/\D>/'; 

preg_match_all($pattern, $subject, $matches);print_r($matches); 
1

請嘗試下面的代碼;

preg_match_all('/<b>.*?<\/b>/is', 
"<b>hello</b> somthing<p>wewrw</p> else <b>world</b>", 
$out); 

print_r($out); 
+0

這也將解析任何其他標籤。我只需要b標籤 – yarek 2014-11-21 13:39:18

+0

請檢查修改後的代碼 – WisdmLabs 2014-11-21 13:49:06

+0

@ user300675'我只需要b標籤',您應該在您的問題中澄清說明 – JFK 2014-12-08 17:33:42

2

每個人都寫正則表達式,我會給你其他的解決方案,您可以使用PHP函數

$document = new DOMDocument(); 
$document->loadHTML($str); 

從字符串加載HTML。然後,當你有DOM對象,你可以使用方法

$nodeList = $document->getElementsByTagName('b'); 

foreach ($nodeList as $b) { 
    echo $b->nodeValue ; 
} 

檢查這些鏈接:

+0

理智的聲音! – Machavity 2014-11-21 13:23:05

+0

我明白你爲什麼發佈了這個,但什麼是StackOverflow「禮儀」忽略標籤(即使它是停止壞習慣並給出更好的答案)? – 2014-11-21 13:23:09

+0

正如我在調節中說的很多,SO的存在是爲了教人,而不僅僅是回答問題。使用正則表達式來解析HTML確實是一個壞主意(HTML標記可以嵌套,產生不可預知的結果),所以最好使用解析器。 – Machavity 2014-11-21 13:24:56