PHP正則獲取頁面所有圖片地址
<?php
//取得頁面所有的圖片地址
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個圖片的地址作為文章的標(biāo)志圖片,文章代碼(內(nèi)容的html)保存到數(shù)據(jù)庫一個字段,然后圖片地址保存到另外一個字段.我就是使用上面的正則解決的.
我說明下,上面的地址是直接獲取img標(biāo)簽內(nèi)src屬性的值.在使用該正則的php頁面訪問該路徑如果能找到圖片的話,可以直接使用,如果不能,你可以使用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]就是存儲該路徑的數(shù)組.
實例
<?php
$ext = 'gif|jpg|jpeg|bmp|png';//羅列圖片后綴從而實現(xiàn)多擴(kuò)展名匹配 by http://www.dhdzp.com 綠色軟件
$str = '<p><img title="綠色軟件" alt="綠色軟件" onload="ResizeImage(this,860)" src="http://www.dhdzp.com /data/soft_img/2010091101619.jpg" /></p><p><img title="綠色軟件" alt="綠色軟件" onload="ResizeImage(this,860)" src="http://www.dhdzp.com /data/soft_img/2010091029938.jpg" /></p><p><img title="綠色軟件" alt="綠色軟件" onload="ResizeImage(this,860)" src="http://www.dhdzp.com /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.dhdzp.com /data/soft_img/2010091101619.jpg""
[1]=>
string(57) "src="http://www.hzhuti.com/sonyericsson/w715/ 2010091029938.jpg""
[2]=>
string(57) "src="http://www.dhdzp.com /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.dhdzp.com /data/soft_img/2010091101619.jpg"
[1]=>
string(51) "http://www.dhdzp.com /data/soft_img/2010091029938.jpg"
[2]=>
string(51) "http://www.dhdzp.com /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等的說明:
$0指的是被整個模式所匹配的文本;
$1指的是首個 ( ) 引用的串;
$2指的是第二個()引用的串; 以此類推
有關(guān)PHP正則獲取頁面所有圖片地址的知識,小編就給大家介紹到這里,希望對大家有所幫助!
- PHP獲取網(wǎng)站中各文章的第一張圖片的代碼示例
- php正則匹配文章中的遠(yuǎn)程圖片地址并下載圖片至本地
- php實現(xiàn)獲取文章內(nèi)容第一張圖片的方法
- PHP判斷文章里是否有圖片的簡單方法
- php采集文章中的圖片獲取替換到本地(實現(xiàn)代碼)
- php筆記之:文章中圖片處理的使用
- php中使用preg_match_all匹配文章中的圖片
- PHP 文章中的遠(yuǎn)程圖片采集到本地的代碼
- php正則提取html圖片(img)src地址與任意屬性的方法
- php使用正則表達(dá)式獲取圖片url的方法
- 小談php正則提取圖片地址
- php獲取文章內(nèi)容第一張圖片的方法示例
相關(guān)文章
PHP設(shè)計模式之觀察者模式入門與應(yīng)用案例詳解
這篇文章主要介紹了PHP設(shè)計模式之觀察者模式入門與應(yīng)用,結(jié)合具體案例形式詳細(xì)分析了PHP觀察者模式的相關(guān)概念、原理、使用方法及操作注意事項,需要的朋友可以參考下2019-12-12
基于php實現(xiàn)隨機(jī)合并數(shù)組并排序(原排序)
最近做了一個項目,其中有這樣一個需求要實現(xiàn),原有帖子列表A,現(xiàn)在需要在A中推廣新業(yè)務(wù)B,那么需要在A列表中1:1混合B中的數(shù)據(jù),隨機(jī)混合,但是需要保持A和B兩列原來的數(shù)據(jù)排序,本篇文章給大家介紹基于php實現(xiàn)隨機(jī)合并數(shù)組并排序(原排序),需要的朋友參考下2015-11-11
PHP使用openssl擴(kuò)展實現(xiàn)加解密方法示例
這篇文章主要介紹了PHP使用openssl擴(kuò)展實現(xiàn)加解密方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
使用PHP和HTML5 FormData實現(xiàn)無刷新文件上傳教程
這篇文章主要介紹了使用PHP和HTML5 FormData實現(xiàn)無刷新文件上傳教程,本文先是分解了程序的編寫步驟,最后給出一個完整示例,需要的朋友可以參考下2014-09-09
PHP的foreach中使用引用時需要注意的一個問題和解決方法
這篇文章主要介紹了PHP的foreach中使用引用時需要注意的一個問題和解決方法,即數(shù)組最后一個元素的值會發(fā)生改變的情況,需要的朋友可以參考下2014-05-05

