正則獲取圖片地址 鏈接地址
更新時間:2008年12月10日 14:11:24 作者:
可以獲取網(wǎng)頁中所有的圖片地址和鏈接地址的代碼,好像一般用在獲取網(wǎng)頁中的資源地址時用的到
復(fù)制代碼 代碼如下:
reg = /<[img|href][^>]*src\s*=\s*('|")?([^'">]*)\1([^>])*>/ig
正則獲取圖片地址
一、問題:
采集的過程中遇到一個問題:從數(shù)據(jù)庫里讀出來的圖片沒有正常顯示,分析后發(fā)現(xiàn)是數(shù)據(jù)庫里的圖片以網(wǎng)站根目錄為相對路徑方式存儲,圖片地址如:/uploads/allimg/090403/012F31N9-1.jpg,原來做的讀取圖片是以http://開關(guān)的URL絕對圖片獲取,所以采集中出現(xiàn)以根目錄開始的圖片地址采集失敗。
二、解決方案:
分析HTML代碼,顯示圖片定用<img>標(biāo)簽,寫一個正則式獲取<img>里的圖片地址再加網(wǎng)站的網(wǎng)站轉(zhuǎn)換為URL的絕對地址,接著的事情交給后面的代碼(遠(yuǎn)程圖片獲取到本地)。
1) 完善解決方法,以“<img”開始寫正規(guī),但這個正式式比較難寫要考慮“<img>”的屬性、空格、多空格、單引號、雙引號、不規(guī)范的屬性引用(如單引號或雙引號括起的屬性值)等等。
2)應(yīng)急解決方法,只要考慮“src=”屬性開始的正則式,但這種方式存在不完善的地方,只要有“src=”出現(xiàn)在的都會被替換,出現(xiàn)“src="的可能性有:javascript,文本里出現(xiàn)的"src"等。但這些是比較少的,再加上一個圖片格式做正則限定,出現(xiàn)被誤替換的概率會更少。
三、實現(xiàn)代碼:
考慮到第一種方法的難度暫時沒有寫,這里第二種應(yīng)急解決方法實現(xiàn)(實現(xiàn)涉及的正則式內(nèi)容這里不做講解和分析,正則式的知識內(nèi)容請google或baidu ^v^):
復(fù)制代碼 代碼如下:
<?php
//測試樣式,考慮多種情況下的正則式。
$body = <<<HTML
<P align=center>1<img width="60" height="90px" src='http://www.chongwen.com/uploads/allimg/090403/012F35310-0.jpg'></P>
<P align=center>2<img src='/uploads/allimg/090403/012F31N9-1.jpg' border="0"></P>
<P align=center>3<img src='/uploads/allimg/090403/012F3D13-2.jpg'style="width:100px"> </P>
<P align=center>4<img width="60" height="90px" src= "http://www.chongwen.com/uploads/allimg/090403/012F35310-0.jpg"></P>
<P align=center>5<img src=" /uploads/allimg/090403/012F31N9-1.jpg " border="0"></P>
<P align=center>6<img src= " /uploads/allimg/090403/012F31N9-1.jpg " border="0"></P>
<P align=center>7<img src= /uploads/allimg/090403/012F3D13-2.jpg style="width:100px"> </P>
HTML;
//網(wǎng)站的地址
$str='src=/'http://www.chongwen.com/';
$body=preg_replace('/src/s*?=/s*?[/"|/']?/s*?//(.+?/.(?:jpg|gif|png|bmp))(/"|/'|/s)*?/s*?/is',"$str$1 '",$body);
echo $body;
?>
相關(guān)文章
正則表達(dá)式(RegExp)判斷文本框中是否包含特殊符號
有時,我們希望判斷文本框中用戶輸入的字符是否含有特殊符號(*/#$@),就像用戶注冊時密碼框的填寫。下面小編給大家分享一個demo,感興趣的朋友一起看看吧2019-10-10
javascript 獲取url參數(shù)的正則表達(dá)式(用來獲取某個參數(shù)值)
javascript 傳多個參數(shù)的正則表達(dá)式(用來獲取某個參數(shù)值) ,腳本之家之前發(fā)布通過函數(shù)獲取url參數(shù)的代碼不是正則表達(dá)式。2010-01-01
javascript 正則表達(dá)式用法 小結(jié)
許多朋友對于js的正則感覺方法比較亂,沒有個統(tǒng)一的方法,大家可以看下,根據(jù)需要進(jìn)行選擇,或把一種用好了,另外一種自然也就很輕松了。2009-06-06

