2012-06-18 48 views
0
 $subject= "Citation flow <img src='/static/images/icons/help.png'> 
           </span> 
          </p> 
          <p style='font-size: 150%;'><b>11</b></p>"; 
      $pattern="/Citation flow[.]+<b>([0-9]+)<\/b>/i"; 

      preg_match_all($pattern, $subject,$matches,PREG_PATTERN_ORDER); 

      print_r($matches); 

我想捕捉數字11 inisde粗體標籤..但我的正則表達式不起作用..爲什麼?正則表達式在PHP中不起作用

UPDATE:

我想出了這個..但我不是100%,這是最好的解決辦法:

$pattern="/Citation flow[\s\S]*<b>([0-9]+)<\/b>/i"; 
+3

當你說'[。] +'你實際上意味着'+'。 '[。] +'匹配一串點;點在字符類中並不特殊。 – lanzz

+0

嗯..非常真實 –

+0

我強烈建議使用一個實際的HTML解析器,像simpledom - http://simplehtmldom.sourceforge.net/。 – Adam

回答

3

那麼,它無法比擬的Citation flow後,它有一個空間,而不是任意數量的點。你可能意味着

(?si)Citation flow.+<b>(\d+)</b> 
+0

\ d +和我做了什麼之間的區別是什麼 –

+0

不要忘記使用'/ s'或'(?s)'。 – Qtax

+0

謝謝,Qtax。我忘了:) – Joey

0

你不想

$pattern="/Citation flow[.]+<b>([0-9]+)<\/b>/si"; 
+0

不太可能,因爲這也會嘗試匹配文字點。 – Joey