2015-07-13 46 views
1

我試圖匹配我定義的模式中第一次出現的數字。模式是adunit [編號]。所以例如我可以有一個字符串是adunit23423adunit23。數字的長度可能會有所不同。preg_match僅在模式中出現第一個數字

我迄今爲止代碼:

$title = "*adunit54* testing this"; 
preg_match_all('!\d+!', $title, $matches); 
$var = implode(' ', $matches[0]); 
echo $var; 

這將輸出:54

但如果我要改變字符串爲 「adunit54測試thi23s」,輸出將被更改爲:54 23

如何讓此表達式僅獲得我的adunit [number]模式中的第一組數字?

回答

1

只需使用preg_match函數可以幫助做單個匹配,其中preg_match_all可以做全局匹配。

$title = "*adunit54* testing this"; 
preg_match('!\d+!', $title, $matches); 
echo $matches[0]; 

如果你仍然想使用preg_match_all然後按照這一招。

preg_match_all('!^\D*\K\d+!', $title, $matches); 
+0

啊是有道理的,但是有無論如何也將我的模式納入模式? – Sixthpoint

+1

檢查我的更新...或'preg_match_all('!adunit \ K \ d +!',$ title,$ matches);' –

相關問題