2014-10-31 60 views
0

我有這樣的代碼在我的jQuery:重新創建這個jQuery而在PHP

var pattern = /\d+/g; 
var retorno = []; 
var aux; 
var inputTxt = "30/60/90" 

while (aux = pattern.exec(inputTxt)){ 
    retorno.push(aux[0]); 
} 

我需要做在PHP非常類似的東西,我試圖

while ($aux = $pattern.exec($inputTxt)){while ($aux = $pattern.exec($inputTxt)){要:

preg_match($pattern, $frm_condicao_de_pagamento, $aux, PREG_OFFSET_CAPTURE); 
for($i = 0; $i < count($aux); $i++){ 

但是會發生此錯誤:「E_WARNING:type 2 - preg_match()[function.preg-match]:Unknown修飾符'g' - 在第5行「,我甚至不確定是否應該使用preg_match()函數來執行此操作。

代碼的想法是檢查數據是否(一個算術級數或具有特定格式的數字(這是在循環內測試))。

所以,結果應該是:array(30,60,90);

+1

不要使用'的preg_match 'w ith'/ g'。使用'preg_match_all'。 – amphetamachine 2014-10-31 18:49:36

+1

你爲什麼在這裏使用正則表達式?爲什麼不只是'inputTxt.split('/')'或'explode('/',$ inputTxt)'? – 2014-10-31 18:50:51

+0

@RocketHazmat,因爲輸入可能是'30/60/90',也可能是'30 -60-90'或'30 - 60 // 90'或'30_60_90'或'30x60x90'...此外,我需要在'30x'和'30d'時收集**注意30/60/90是虛構的數字,例如它們可能是10/15/20或32/50/55。有關更多信息,請查看我的最後一個問題[「Split Regex anything but number」](http://stackoverflow.com/questions/26639211/split-regex-anything-but-number) – 2014-10-31 19:03:19

回答

1

可以使用preg_match_all()函數來獲取例如所有的比賽(在這種情況下,你並不需要添加g標誌):

$str = "30/60/90" ; 
$matches; 
preg_match_all('/(\d+)/',$str, $matches); 
print_r($matches); 

注意到這裏我使用()和\ d內,採用()的目標是小組比賽,所以你可以訪問它們使用$ 1 $ 2等

+0

我在[PHPFiddle](http ://phpfiddle.org/)並將其返回兩個相同陣列'陣列 ( [0] =>數組 ( [0] => 30 [1] => 60 [2] => 90 ) [1] =>數組 ( [0] => 30 [1] => 60 [2] => 90 ) )' – 2014-10-31 18:58:39

+1

是的,我告訴你之前如果刪除()outiside的\ d + y ou會得到所需的數組,但可能是你想要訪問的比賽$ 1 $ 2,這就是爲什麼我添加()爲分組的原因 – Ismail 2014-10-31 19:04:20

+0

對不起,我沒有閱讀你的答案的部分,我的錯。感謝這就是我所需要的。 =) – 2014-10-31 19:07:32