大家好 我有一個字符串的preg_match幫助尋找數
<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>
我需要得到10000的答案..我是如何使用的preg_match ???注:這是implortant那場比賽
感謝提前
大家好 我有一個字符串的preg_match幫助尋找數
<font size="+1"><b>Open Directory Sites</b></font> (1-20 of 10000)<p>
我需要得到10000的答案..我是如何使用的preg_match ???注:這是implortant那場比賽
感謝提前
多次數至少在這種特殊情況下,可以使用'/\(\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]
,只有這一次它會是一個包含一個或多個實際值的數組。
它做什麼'(\ d +)'沒有大括號? – Sarfraz 2010-06-27 15:05:49
。如果字符串只包含一個(1-20個10000),那麼它工作正常......但在我的情況下,存在多次發生的機會 – 2010-06-27 15:12:16
您是否介意編輯您的問題以反映真實情況? – 2010-06-27 15:15:26