亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php正則匹配圖片路徑原理與方法

2024-09-04 11:47:12
字體:
來源:轉載
供稿:網友

提取src=里面的圖片地址還不足夠,因為不能保證那個地址一定是絕對地址,完全的地址,如果那是相對的呢?如果地址諸如:

albums/Candids/thumb_P1050338.jpg

/content/media/touts/5271608/5271654/15320982

那該如何是好?有時在這些地址前面需要加http://Vevb.com/,有些甚至要加http://Vevb.com/example2/.../ 于是,要寫出出一種法則符合所有要求,簡直是天方夜譚,只能見機行事對癥下藥,有時,需要從前面動刀,有時需要從后面砍斷。

今天,我驚訝地知道了一個道理,原來http://Vevb.com/ 和http://Vevb.com////// 是一樣的!

http://img3.Vevb.com/pics/nav/lg_main_a6.png 和

http://img3.Vevb.com////pics////nav///lg_main_a6.png

最終你都能到達,圖片網址規范的html代碼無非就是:

1 <img src="??" title="??" alt="??" border="??" width="??" height="??" /> 

??和??是非必需的,若要通過XHTML認證??、??、??、??必不可少,就正則談正則的話,我寫出的最短匹配是 (?<=img.+?src=").*?(?="),不過,這條在php里不行,會出現:

Warning: preg_match_all() [function.preg-match-all]: Compilation failed: lookbehind assertion is not fixed length at offset *** in *** 

糾結了很久,都不行,原因何在呢?試了很多次,終于發現問題在(?<=img.+?src=")這個零寬斷言里,在php中,零寬斷言里不支持類似“*”、“+”這些無限次的東西,于是報錯了,把“.+?”改為定長就好。不過,要“img”和“src=”之間定長基本上是不可能的。通常,圖片地址的img和src只會相隔一個很簡單的空格,但不排除某些情況在src之前,img后有alt、titlte等東西,所以

(?<=img.src=").*?(?=") 或 (?<=imgssrc=").*?(?=") 可能可以,但不保證100%沒問題,你也許會問,單純 (?<=src=").*?(?=") 不行嗎?通常情況,可以,但,搜索過頁面的盆友應該知道,除了圖片地址用src開頭以外,javascript地址也用src開頭!而且,太多神通廣大的不可預知因素隱含其中,于是這個貌似很簡短完美的寫法就行不通了。

你又或許會問,聰明簡短的不行,我把圖片的后綴列出來,總該可以了吧,如

(?<=src=").*?.(jpg|jpeg|gif|png|bmp|JPG|JPEG|GIF|PNG|BMP) 

的確,這個寫法實在是很老實,不過,你見過沒有后綴的圖片?wwe.com 有很多這種例子呢

RAW http://us.wwe.com/content/media/images/Headers/15559182 

SmackDown http://us.wwe.com/content/media/images/Headers/15854138 

NXT http://us.wwe.com/content/media/images/Headers/15929136 

Superstars http://us.wwe.com/content/media/images/Headers/15815850

上面的網址都是圖片,但都沒有傳統后綴,你老實也沒用,還是不能獲取到它們,怎么辦呢?還可以這樣:<img(.*?)src="(.*?)(?=") 

和上面的表達式不同,這次的結果中array[0]的內容不是我們想要的,我們要的圖片地址在array[2]里。為什么呢?因為我們用了2個 (.*?),每個“()”的東西會自動存在一個組里,而array[0]代表結果的匯總,array[1]包含了img和src里的所有東西,array[2]才輪到我們想要的圖片地址。這種匹配方法,既能匹配有傳統后綴的圖片,也能匹配一些無后綴的圖片文件,同時又不會殺錯其它src=文件,個人感覺還是不錯的.

你到底要什么樣的圖片,是固定格式還是其它?得具體情況具體分析呢,我的建議是:如果你要的圖片地址的格式是img空格src=的,請使用:(?<=img.src=").*?(?=") ,數組唯一,你懂的。

否則,請使用<img(.*?)src="(.*?)(?="),記得留意有用內容所在的數組位置哦,并在項目中使用了很長時間的正則吧.

/<img.*srcs*=s*["|']?s*([^>"'s]*)/i

我使用kindeditor保存文章,但是需要取出第N個圖片的地址作為文章的標志圖片,文章代碼(內容的html)保存到數據庫一個字段,然后圖片地址保存到另外一個字段.我就是使用上面的正則解決的.

我說明下,上面的地址是直接獲取img標簽內src屬性的值.在使用該正則的php頁面訪問該路徑如果能找到圖片的話,可以直接使用,如果不能,你可以使用preg_match_all將所有地址先保存到數組,然后處理路徑,比如獲取文件名稱(不含路徑部分),然后重新組成url,再刪除圖片.

我的例子:

preg_match_all("/<img.*srcs*=s*["|']?s*([^>"'s]*)/i",str_ireplace("/","",$content),$arr);

呵呵 我的內容部分被php給加上轉義了,所以我需要先把去除,str_ireplace("/","",$content),然后將匹配的內容保存到$arr數組(二維的).

$arr[1]就是存儲該路徑的數組.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩大陆欧美高清视频区| 日韩av一区在线观看| 欧美黑人性生活视频| 亚洲国产另类 国产精品国产免费| 欧美精品第一页在线播放| 欧美日韩激情美女| 欧美另类在线播放| 欧美与黑人午夜性猛交久久久| 亚洲第一中文字幕| 久久九九亚洲综合| 欧美精品生活片| 久久久久在线观看| 久久最新资源网| 亚洲第一中文字幕| 欧美成人小视频| 一本色道久久88综合日韩精品| 91视频国产一区| 亚洲国产精品va在线观看黑人| 国产成人亚洲精品| 日韩免费av片在线观看| 国产一区二区三区四区福利| 欧美性高跟鞋xxxxhd| 91亚洲国产成人久久精品网站| 欧美日韩在线观看视频| 国产日韩精品一区二区| 中文字幕国产精品| 日韩欧美在线观看视频| 性欧美办公室18xxxxhd| 免费91在线视频| 国产精品aaa| 午夜精品在线视频| 午夜精品www| 亚洲自拍偷拍色图| 亚洲欧美激情四射在线日| 中文字幕在线看视频国产欧美在线看完整| 亚洲精品视频二区| 欧美成人免费小视频| 一区二区三区高清国产| 亚洲www视频| 久久久亚洲欧洲日产国码aⅴ| 国产精品日韩一区| 国产狼人综合免费视频| 日韩精品极品视频免费观看| 欧美视频在线观看免费网址| 欧美在线视频a| 亚洲天堂日韩电影| 久久99精品视频一区97| 日韩高清免费在线| 亚洲视频精品在线| 国产在线久久久| 国产ts一区二区| 久久久国产影院| 成人做爽爽免费视频| 国产精品久久久久久久久粉嫩av| 亚洲美女www午夜| 日本成人激情视频| 久久久视频免费观看| 96精品久久久久中文字幕| 国产精品成久久久久三级| 91网站免费观看| 午夜精品一区二区三区在线| 97精品一区二区视频在线观看| 久久精品国产v日韩v亚洲| 国产精品一区久久| 亚洲成人av资源网| 久久精品视频在线观看| 欧美大码xxxx| 欧美午夜视频一区二区| 国产aaa精品| 色综合久久悠悠| 亚洲欧美激情一区| 欧美精品videossex性护士| 亚洲人成在线电影| 成人黄色av网站| 精品美女国产在线| 国产精品毛片a∨一区二区三区|国| 97色在线观看免费视频| 久久色在线播放| 欧美在线性视频| 亚洲香蕉成视频在线观看| 日产精品99久久久久久| 国产主播在线一区| 日韩大陆欧美高清视频区| 亚洲欧美日韩一区二区在线| 午夜精品久久久久久久99热| 亚洲成av人片在线观看香蕉| 成人激情黄色网| 亚洲日本中文字幕| 在线电影中文日韩| 久久精品一偷一偷国产| 日韩成人av网址| 亚洲精品久久久久国产| 国产精品视频在线播放| 欧美视频在线视频| 欧美日韩国产一区二区三区| 欧美精品一区在线播放| 欧美性猛交99久久久久99按摩| 国产精品久久久久久超碰| 久久精品国产视频| 亚洲精品乱码久久久久久金桔影视| 亚洲变态欧美另类捆绑| 欧美极品在线播放| 亚洲欧洲在线观看| 91免费福利视频| 欧美黄色成人网| 国产这里只有精品| 亚洲人成亚洲人成在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 日韩福利视频在线观看| 欧美性猛交xxxx乱大交3| 亚洲伊人久久综合| 亚洲18私人小影院| 亚洲人成电影网站| 久久韩国免费视频| 欧美精品免费在线观看| 97视频在线观看免费高清完整版在线观看| 日本成人免费在线| 国产日韩中文在线| 精品久久久久久久久久久久久久| 国产亚洲欧美日韩一区二区| 欧美激情精品久久久久久久变态| 91国产美女在线观看| 91国语精品自产拍在线观看性色| 国产成人精品久久二区二区| 欧美性猛交xxxx免费看久久久| 国产精品青青在线观看爽香蕉| 欧美怡红院视频一区二区三区| 亚洲人成网7777777国产| 亚洲精品欧美一区二区三区| 午夜精品久久久久久久久久久久| 欧美日韩免费一区| 懂色av影视一区二区三区| 亚洲iv一区二区三区| 81精品国产乱码久久久久久| 2019中文字幕在线免费观看| 日韩免费观看高清| 奇米一区二区三区四区久久| 国产一区二区三区直播精品电影| 一区二区av在线| 91精品久久久久| 亚洲午夜激情免费视频| 亚洲网站在线播放| 国模叶桐国产精品一区| 欧美猛交免费看| 91在线免费网站| 国产成人福利夜色影视| 国产91色在线|免| 欧美成人国产va精品日本一级| 奇米影视亚洲狠狠色| 久久久www成人免费精品| 久久影视电视剧免费网站| 国内精品模特av私拍在线观看| 欧美日韩在线看| 中文字幕不卡在线视频极品| 久久久久久久av| 综合欧美国产视频二区| 国模叶桐国产精品一区| 综合欧美国产视频二区| 国产欧美最新羞羞视频在线观看| 国产亚洲欧洲在线| 国产性色av一区二区| 久久精品国产亚洲精品2020| 国产精品久久91| 亚洲男人天堂九九视频|