當前位置: > 學(xué)習>正文
PHP preg_match_all函數用法詳解
int preg_match_all ( string pattern, string subject, array &matches [, int flags] )
最近在研究爬蟲(chóng),對抓取的頁(yè)面進(jìn)行解析,需要用到這個(gè)函數。由于之前對這個(gè)函數只是一知半解,結果被狠狠地坑了一把。
flags 是可省略的,默認值是PREG_PATTERN_ORDER,還可以有其他值,這個(gè)會(huì )影響matches的內容形式。但這個(gè)不重要,只需知道缺省flags時(shí),matches是什么樣子就可以了。
pattern和subject就不多說(shuō)了,重點(diǎn)說(shuō)一說(shuō)matches。
matches(注意這里是引用)是一個(gè)二維數組,matches[0] 是整個(gè)pattern匹配的結果。matches[1] 是第一個(gè)子模式(正則表達式中的子模式,就是圓括號括起來(lái)的部分)匹配的結果,matches是 第二個(gè)子模式的匹配結果。
而且,這個(gè)函數的返回值是整個(gè)pattern匹配到的結果數量。
現舉例說(shuō)明:
<?php
$pattern = "/<[^>]+>(.*)<\/[^>]+>/U";
$subject = "<b>example:</b><div align = left>this is a test</div>";
preg_match_all($pattern,$subject,$out);
print_r($out);
?>
注意$pattern中標紅的就是子模式。

注意這個(gè)結果的形式,array[0]是整個(gè)pattern匹配到的結果,array[1]是pattern中子模式 (.*) 所匹配到的結果。但是array[1]匹配的結果是和array[0]中的結果相對應。
最近在研究爬蟲(chóng),對抓取的頁(yè)面進(jìn)行解析,需要用到這個(gè)函數。由于之前對這個(gè)函數只是一知半解,結果被狠狠地坑了一把。
flags 是可省略的,默認值是PREG_PATTERN_ORDER,還可以有其他值,這個(gè)會(huì )影響matches的內容形式。但這個(gè)不重要,只需知道缺省flags時(shí),matches是什么樣子就可以了。
pattern和subject就不多說(shuō)了,重點(diǎn)說(shuō)一說(shuō)matches。
matches(注意這里是引用)是一個(gè)二維數組,matches[0] 是整個(gè)pattern匹配的結果。matches[1] 是第一個(gè)子模式(正則表達式中的子模式,就是圓括號括起來(lái)的部分)匹配的結果,matches是 第二個(gè)子模式的匹配結果。
而且,這個(gè)函數的返回值是整個(gè)pattern匹配到的結果數量。
現舉例說(shuō)明:
<?php
$pattern = "/<[^>]+>(.*)<\/[^>]+>/U";
$subject = "<b>example:</b><div align = left>this is a test</div>";
preg_match_all($pattern,$subject,$out);
print_r($out);
?>
注意$pattern中標紅的就是子模式。

注意這個(gè)結果的形式,array[0]是整個(gè)pattern匹配到的結果,array[1]是pattern中子模式 (.*) 所匹配到的結果。但是array[1]匹配的結果是和array[0]中的結果相對應。
版權聲明: 本站僅提供信息存儲空間服務(wù),旨在傳遞更多信息,不擁有所有權,不承擔相關(guān)法律責任,不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責。如因作品內容、版權和其它問(wèn)題需要同本網(wǎng)聯(lián)系的,請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。