2011-06-05 70 views
1

說我有這樣的:我怎樣才能用RegEx抓住這個?

<li class="one"><strong>String here: </strong><span class="one">&nbsp; 
           <!--googleoff: all--> 
           <strong>STRING TO GRAB</strong> 
           <!--googleon: all--> 
           </span></li> 

我怎麼能搶用正則表達式的STRING TO GRAB有效?請注意,這不是網頁上的唯一文字,因此/<strong>(.*)<\/strong>/不起作用。

謝謝

+0

您需要另一個*錨點*。 「谷歌」的評論總是圍繞着它呢? – 2011-06-05 20:14:54

+0

老實說,我不確定。我想是這樣,但我沒有做任何徹底的研究。我會打開其他瀏覽器並開始檢查。 – Rob 2011-06-05 20:15:47

+0

是的,他們似乎總是在那裏。 – Rob 2011-06-05 20:17:38

回答

3

有兩種方法。

Dom類:如果html是一種體面的類型,使用PHP的dom類。

參見: - http://www.php.net/manual/en/domxpath.query.php - http://www.php.net/manual/en/domdocument.loadhtml.php

正則表達式 如果它不是一個真正有效的HTML或DOM加載不工作,也許正則表達式是一個很好的解決方案。

我假設< - googleoff:all-- >始終存在,這可能工作,如果沒有,也許你可以在字符串的特殊性提供一些更多的評論:

$string = "yourhtmlstring"; 
$matches = array(); 
preg_match('/<!--googleoff: all-->\s+?<strong>(.+)<\/strong>\s+?<!--googleon: all-->/', $string, $matches) 
var_dump($matches); 

最終尖端 要測試的正則表達式進一步:http://tinyurl.com/6gy6584

0

作爲對對方的回答說,正則表達式不是HTML(或XML)

最佳答案210
/<strong>(.+?)<\/strong>/ 

注意?這使得正則表達式非貪婪