在PHP我們可以利用preg_match_all()這個函數,通過正規表示法來找尋所有匹配的圖片連結。 可應用的範圍十分廣泛。

無論是要抓取別人網站的圖片,或者是分析自己網站的文章的內容,通通可以使用這個方法來實現。

preg_match_all() 函數

preg_match_all() 這個函數會依照我們下的正規表示法的規則去匹配所有來源數據內所有符合條件的資料。

它還有另一個好兄弟叫 preg_match(),這個跟它很像也是會去匹配符合條件的資料,但是它比較懶找到一個符合的就會停止了。

使用方式

preg_match_all($pattern,$data,$match); 

這個函數會依照 $pattern 的規則去 $data 內找尋匹配的資料,然後把它打包到 $match 裡面回傳。

$pattern : 我們自定義的正規表示法的規則

$data : 來源數據。

$match : 回傳匹配的資料。


這邊我們已經大致了解 preg_match_all() 的用法,接著下來就是實際範例

<?php
$data ='數據來源(省略)';
$pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png]))[\'|\"].*?[\/]?>/";
preg_match_all($pattern,$data,$match);

上面的範例只有找尋 .gif、.jpg、.png 這三種格式的圖片,如有需要請自行修改條件。  

正規表示法 匹配圖片

 

以圖中的這個例子,輸出的結果會是如下圖。也就是說如果有匹配的資料的話

$match 會回傳Array, $match[0] 裡面是原始匹配的資料,$match[1] 則是只剩下連結的部分。

preg_match_all輸出

如果都沒有匹配的話,是不會有 $match[0] 和 $match[1],所以在處理時要先確認是否有匹配資料,以免出現錯誤訊息。




文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/php-preg_match_all