2015-10-22 29 views
-2

我在我的項目中使用preg_match_all()來查找給定字符串中的匹配項。例如:找不到匹配項時preg_match_all()中第三個參數的類型

preg_match_all($pattern, $subject, $matches, $flags); 

如果找到匹配,則$matches參數將是根據$flags有序匹配多維數組。

如果找不到匹配項,$matches是什麼類型?它仍然是一個數組,雖然是一個空陣列,或者它會是其他的東西,如falsenull

價:http://php.net/manual/en/function.preg-match-all.php

+1

你爲什麼不試試?只需var_dump()$匹配或證明它與不同的值,如false或null與'==='。 – syck

+1

這聽起來應該是[非常容易檢查](http://ideone.com/Cy7HWM)。 – Phylogenesis

回答

0

$匹配將是包含一個空的子陣列的陣列。這是你可以輕鬆測試自己的東西。

<?php 

preg_match_all('/O/', 'foo', $matches); 
var_dump($matches); 

輸出:

array(1) { 
    [0]=> 
    array(0) { 
    } 
} 
+0

實際上'$ matches'不是空的,'$ matches [0]'是空的。 – Daan

+0

它是空的,或多或少。但我已編輯以反映這一變化。 –

0

一個簡單的測試會告訴你這一點:

preg_match_all("/[0-9]/", "Hello World", $matches); 
var_dump($matches); 

array(1) { 
    [0]=> array(0) { 
    } 
} 
1

你不會得到一個空數組,但有一個或幾個空數組的數組,這取決於在正則表達式中的捕獲組。看到區別:

preg_match_all('/foo/', 'bar', $matches); 
print_r($matches); 
Array 
(
    [0] => Array () 
) 

preg_match_all('/(f)oo/', 'bar', $matches); 
print_r($matches); 
Array 
(
    [0] => Array () 
    [1] => Array () 
) 
+0

很好的捕捉與捕捉組的存在給予一個稍微不同的空響應。 – Phylogenesis

相關問題