2010-06-27 96 views
2

大家好 我有一個字符串的preg_match幫助尋找數

<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p> 

我需要得到10000的答案..我是如何使用的preg_match ???注:這是implortant那場比賽

感謝提前

回答

3

多次數至少在這種特殊情況下,可以使用'/\(\d+\-\d+ of (\d+)\)/'pattern

它匹配像這樣的字符串({one-or-more-digits}-{one-or-more-digits} of {one-or-more-digits}),並將最後一個{one-or-more-digits}捕獲到一個組中(僅爲清晰起見,添加了{} ..)。

$str = '<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>'; 
$matches = array(); 
if (preg_match('/\(\d+\-\d+ of (\d+)\)/', $str, $matches)) 
{ 
    print_r($matches); 
} 

打印:

Array 
(
    [0] => (1-20 of 10000) 
    [1] => 10000 
) 

所以,你正在尋找的10000將是可訪問的$matches[1]。您的評論後


編輯:如果你有({one-or-more-digits}-{one-or-more-digits} of {one-or-more-digits})多次出現,則可以使用preg_match_all,趕上他們。我不知道自己是多麼有用的數字是沒有在其發生的背景,但這裏是你如何能做到這一點:

$str = '<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>'; 
$str .= "\n$str\n"; 
echo $str; 
$matches = array(); 
preg_match_all('/\(\d+\-\d+ of (\d+)\)/', $str, $matches); 
print_r($matches); 

打印:

<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p> 
<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p> 
Array 
(
    [0] => Array 
     (
      [0] => (1-20 of 10000) 
      [1] => (1-20 of 10000) 
     ) 

    [1] => Array 
     (
      [0] => 10000 
      [1] => 10000 
     ) 

) 

同樣,你在找什麼因爲會在$matches[1],只有這一次它會是一個包含一個或多個實際值的數組。

+0

它做什麼'(\ d +)'沒有大括號? – Sarfraz 2010-06-27 15:05:49

+0

。如果字符串只包含一個(1-20個10000),那麼它工作正常......但在我的情況下,存在多次發生的機會 – 2010-06-27 15:12:16

+0

您是否介意編輯您的問題以反映真實情況? – 2010-06-27 15:15:26