PHP正則獲取頁(yè)面所有圖片地址
<?php
//取得頁(yè)面所有的圖片地址
function getimages($str)
{
$match_str = "/((http://)+([^ rn()^$!`"'|[]{}<>]*)((.gif)|(.jpg)|(.bmp)|(.png)|(.GIF)|(.JPG)|(.PNG)|(.BMP)))/";
preg_match_all ($match_str,$str,$out,PREG_PATTERN_ORDER);
return $out;
}
?>
/<img.*srcs*=s*["|']?s*([^>"'s]*)/i
,我使用kindeditor保存文章,但是需要取出第N個(gè)圖片的地址作為文章的標(biāo)志圖片,文章代碼(內(nèi)容的html)保存到數(shù)據(jù)庫(kù)一個(gè)字段,然后圖片地址保存到另外一個(gè)字段.我就是使用上面的正則解決的.
我說(shuō)明下,上面的地址是直接獲取img標(biāo)簽內(nèi)src屬性的值.在使用該正則的php頁(yè)面訪問(wèn)該路徑如果能找到圖片的話,可以直接使用,如果不能,你可以使用preg_match_all將所有地址先保存到數(shù)組,然后處理路徑,比如獲取文件名稱(不含路徑部分),然后重新組成url,再刪除圖片.
我的例子:
preg_match_all("/<img.*srcs*=s*["|']?s*([^>"'s]*)/i",str_ireplace("\","",$content),$arr);
呵呵 我的內(nèi)容部分被php給加上轉(zhuǎn)義了,所以我需要先把去除,str_ireplace("\","",$content),然后將匹配的內(nèi)容保存到$arr數(shù)組(二維的).
$arr[1]就是存儲(chǔ)該路徑的數(shù)組.
實(shí)例
<?php
$ext = 'gif|jpg|jpeg|bmp|png';//羅列圖片后綴從而實(shí)現(xiàn)多擴(kuò)展名匹配 by http://www.dbjr.com.cn 綠色軟件
$str = '<p><img title="綠色軟件" alt="綠色軟件" onload="ResizeImage(this,860)" src="http://www.dbjr.com.cn /data/soft_img/2010091101619.jpg" /></p><p><img title="綠色軟件" alt="綠色軟件" onload="ResizeImage(this,860)" src="http://www.dbjr.com.cn /data/soft_img/2010091029938.jpg" /></p><p><img title="綠色軟件" alt="綠色軟件" onload="ResizeImage(this,860)" src="http://www.dbjr.com.cn /data/soft_img/2010092839019.jpg" /></p>';
preg_match_all("/(href|src)=(["|']?)([^ "'>]+.($ext))\2/i", $str, $matches);
var_dump($matches);
?>
結(jié)果
array(5) {
[0]=>
array(3) {
[0]=>
string(57) "src="http://www.dbjr.com.cn /data/soft_img/2010091101619.jpg""
[1]=>
string(57) "src="http://www.hzhuti.com/sonyericsson/w715/ 2010091029938.jpg""
[2]=>
string(57) "src="http://www.dbjr.com.cn /data/soft_img/2010092839019.jpg""
}
[1]=>
array(3) {
[0]=>
string(3) "src"
[1]=>
string(3) "src"
[2]=>
string(3) "src"
}
[2]=>
array(3) {
[0]=>
string(1) """
[1]=>
string(1) """
[2]=>
string(1) """
}
[3]=>
array(3) {
[0]=>
string(51) "http://www.dbjr.com.cn /data/soft_img/2010091101619.jpg"
[1]=>
string(51) "http://www.dbjr.com.cn /data/soft_img/2010091029938.jpg"
[2]=>
string(51) "http://www.dbjr.com.cn /data/soft_img/2010092839019.jpg"
}
[4]=>
array(3) {
[0]=>
string(3) "jpg"
[1]=>
string(3) "jpg"
[2]=>
string(3) "jpg"
}
}
PHP正則匹配圖片并給圖片加鏈接詳解
$newstext=preg_replace(preg_replace('/(<img[^>]+srcs*=s*”?([^>"s]+)”?[^>]*>)/im', ‘<a href=”$2″>$1</a>', $newstext);
1.preg_replace和str_replace的區(qū)別:
str_replace只是純字符替換,而preg_replace才是正則替換
2.$0,$1,$2等的說(shuō)明:
$0指的是被整個(gè)模式所匹配的文本;
$1指的是首個(gè) ( ) 引用的串;
$2指的是第二個(gè)()引用的串; 以此類推
有關(guān)PHP正則獲取頁(yè)面所有圖片地址的知識(shí),小編就給大家介紹到這里,希望對(duì)大家有所幫助!
- PHP獲取網(wǎng)站中各文章的第一張圖片的代碼示例
- php正則匹配文章中的遠(yuǎn)程圖片地址并下載圖片至本地
- php實(shí)現(xiàn)獲取文章內(nèi)容第一張圖片的方法
- PHP判斷文章里是否有圖片的簡(jiǎn)單方法
- php采集文章中的圖片獲取替換到本地(實(shí)現(xiàn)代碼)
- php筆記之:文章中圖片處理的使用
- php中使用preg_match_all匹配文章中的圖片
- PHP 文章中的遠(yuǎn)程圖片采集到本地的代碼
- php正則提取html圖片(img)src地址與任意屬性的方法
- php使用正則表達(dá)式獲取圖片url的方法
- 小談php正則提取圖片地址
- php獲取文章內(nèi)容第一張圖片的方法示例
相關(guān)文章
從零開始學(xué)YII2框架(一)通過(guò)Composer安裝Yii2框架
今天終于搞明白怎么安裝Yii2了。對(duì)于我這種小白來(lái)說(shuō)真是費(fèi)盡周折。下面來(lái)介紹下如何安裝Composer和如何使用Composer安裝Yii2。2014-08-08
Yii框架實(shí)現(xiàn)記錄日志到自定義文件的方法
這篇文章主要介紹了Yii框架實(shí)現(xiàn)記錄日志到自定義文件的方法,結(jié)合實(shí)例形式分析了Yii框架日志記錄的原理及自定義日志記錄的相關(guān)配置與實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05
WordPress偽靜態(tài)規(guī)則設(shè)置代碼實(shí)例
這篇文章主要介紹了WordPress偽靜態(tài)規(guī)則設(shè)置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
Zend?Framework框架的校驗(yàn)器使用使用示例(自定義校驗(yàn)器和校驗(yàn)器鏈)
這篇文章主要介紹了Zend?Framework框架的校驗(yàn)器使用使用示例(自定義校驗(yàn)器和校驗(yàn)器鏈),需要的朋友可以參考下2014-03-03

