1. 程式人生 > >php進階:查詢所有匹配的結果

php進階:查詢所有匹配的結果

preg_match只能匹配一次結果,但很多時候我們需要匹配所有的結果,preg_match_all可以迴圈獲取一個列表的匹配結果陣列。

$p = "|<[^>]+>(.*?)</[^>]+>|i";
$str = "<b>example: </b><div align=left>this is a test</div>";
preg_match_all($p, $str, $matches);
print_r($matches);

可以使用preg_match_all匹配一個表格中的資料:

$p = "/<tr><td>(.*?)<\/td>\s*<td>(.*?)<\/td>\s*<\/tr>/i";
$str = "<table> <tr><td>Eric</td><td>25</td></tr> <tr><td>John</td><td>26</td></tr> </table>";
preg_match_all($p, $str, $matches);
print_r($matches);

$matches結果排序為$matches[0]儲存完整模式的所有匹配, $matches[1] 儲存第一個子組的所有匹配,以此類推。