2013-06-26 253 views
1

我希望你能幫助我。我對這個問題感到十分困惑。不知何故,我的preg_match_all不會返回任何東西。它應該返回一個錯誤或一個整數,但它不會。 Error_reporting是開啓的,所有的東西,我都想不出任何與此有關的東西。preg_match_all不返回任何東西

echo $string = '234,2345,34534,223'.'<br>'; 
echo preg_match_all('/,[0-9][0-9]/', $string).'<br>'; 

你可以看到$ string,但第二個回聲沒有做任何事情。我想你會需要更多的信息,但我只是不知道這個問題所在。

編輯: 運行PHP 4.3

+0

您正在將目標字符串初始化爲'$ string',但將其用作'$ test';錯字? – orique

+1

修正了!沒有在我的代碼中輸入錯字;) –

回答

1

preg_match_all返回匹配的數目中發現,或FALSE。你想傳入第三個參數,一個被引用的數組,以及如果你想看結果的話。

echo $string = '234,2345,34534,223'.'<br>'; 
preg_match_all('/,[0-9][0-9]/', $string, $matches); 
print_r($matches); 

(另外,你使用$string然後$test但我認爲這只是在問題的拼寫錯誤。)

0

您需要提供第三個參數作爲捕捉數組中preg_match_all和首先檢查它的返回值。像這樣使用它:

if (preg_match_all('/,\d{2}/', $test, $match)) { 
    print_r($match); 
} 
+0

在原始代碼中,我使用$ test而不是$ string。我在我的評論中將其更改爲$ string,但忘記替換第二個$ test,這是我的錯誤。 添加$匹配的竅門。我不知道使用可選的$ matches參數時,preg_match_all僅返回一個值。它沒有明確地在PHP手冊中這麼說... 感謝您的快速幫助! :) –

+0

你非常歡迎,很高興它爲你工作。 – anubhava

+0

如果此答案幫助您解決問題,請考慮將其標記爲「已接受」,以便將來遇到類似問題的用戶將能夠輕鬆地看到它。 – anubhava