php正則取img標(biāo)記中任意屬性(正則替換去掉或改變圖片img標(biāo)記中的任意屬性)
更新時(shí)間:2013年08月13日 11:12:21 作者:
因有一項(xiàng)目新聞發(fā)布系統(tǒng),數(shù)據(jù)庫(kù)內(nèi)容字段中存儲(chǔ)的是原圖的路徑(當(dāng)然還有其他文字內(nèi)容啦,內(nèi)容里插圖時(shí),存的是圖片路徑),但前臺(tái)想使用縮略圖,琢磨1小時(shí)余,得到以下結(jié)果,可解決問(wèn)題
因有一項(xiàng)目新聞發(fā)布系統(tǒng),數(shù)據(jù)庫(kù)內(nèi)容字段中存儲(chǔ)的是原圖的路徑(當(dāng)然還有其他文字內(nèi)容啦,內(nèi)容里插圖時(shí),存的是圖片路徑),但前臺(tái)想使用縮略圖,琢磨1小時(shí)余,得到以下結(jié)果,可解決問(wèn)題(取img標(biāo)簽會(huì)了,取別的標(biāo)簽任意屬性自然也會(huì)了):
<?php
/*正則取圖片img標(biāo)記中的任意屬性*/
$word = '<p height="22" align="cenetr">111 22</p> <img src="/upload/images/aaa.jpg" width="100"><div style="float:left;">中國(guó)人</div>';
//取整個(gè)圖片代碼
preg_match('/</s*img/s+[^>]*?src/s*=/s*(/'|/")(.*?)//1[^>]*?//?/s*>/i',$word,$matches);
echo $matches[0];//結(jié)果:<img src="/upload/images/aaa.jpg" width="100">
$word = '<p height="22" align="cenetr">111 22</p> <img height="60" src="/upload/images/aaa.jpg" width=100 style=><div style="float:left;">中國(guó)人</div>';
//取width
preg_match('/<img.+(width=/"?/d*/"?).+>/i',$word,$matches);
echo $matches[1];
//取height
preg_match('/<img.+(height=/"?/d*/"?).+>/i',$word,$matches);
echo $matches[1];
//取src
preg_match('/<img.+src=/"?(.+/.(jpg|gif|bmp|bnp|png))/"?.+>/i',$word,$matches);
echo $matches[1];
/*正則替換去掉或改變圖片img標(biāo)記中的任意屬性***************************************************************/
$str = '<p height="22" align="cenetr">111 22</p> <img height="60" src="/upload/images/aaa.jpg" width=100 style=><div style="float:left;">中國(guó)人</div>
<p height="22" align="cenetr">31313 224344</p> <img src="/upload/images/bbb.jpg" height="60" width=100 style=><div style="float:left;">1212121</div>';
//改變src屬性(此處將原來(lái)的src="/upload/images/bbb.jpg"改變?yōu)閟rc="/upload/_thumbs/Images/bbb.jpg")
print preg_replace('/(<img.+src=/"?.+)(images//)(.+/.(jpg|gif|bmp|bnp|png)/"?.+>)/i',"/${1}_thumbs/Images//${3}",$str);
/*改變src屬性,
此處將原來(lái)的src="/upload/images/bbb.jpg"改變?yōu)閟rc="/upload/_thumbs/Images/bbb.jpg",并舍棄寬和高
(比如你想在前臺(tái)顯示縮略圖,但數(shù)據(jù)庫(kù)中存儲(chǔ)的是原圖的路徑。為什么要舍棄寬高??你縮略圖啊!還是原圖的寬高,會(huì)怎樣???)
*/
print preg_replace('/(<img).+(src=/"?.+)images//(.+/.(jpg|gif|bmp|bnp|png)/"?).+>/i',"/${1} /${2}_thumbs/Images//${3}>",$str);
?>
復(fù)制代碼 代碼如下:
<?php
/*正則取圖片img標(biāo)記中的任意屬性*/
$word = '<p height="22" align="cenetr">111 22</p> <img src="/upload/images/aaa.jpg" width="100"><div style="float:left;">中國(guó)人</div>';
//取整個(gè)圖片代碼
preg_match('/</s*img/s+[^>]*?src/s*=/s*(/'|/")(.*?)//1[^>]*?//?/s*>/i',$word,$matches);
echo $matches[0];//結(jié)果:<img src="/upload/images/aaa.jpg" width="100">
$word = '<p height="22" align="cenetr">111 22</p> <img height="60" src="/upload/images/aaa.jpg" width=100 style=><div style="float:left;">中國(guó)人</div>';
//取width
preg_match('/<img.+(width=/"?/d*/"?).+>/i',$word,$matches);
echo $matches[1];
//取height
preg_match('/<img.+(height=/"?/d*/"?).+>/i',$word,$matches);
echo $matches[1];
//取src
preg_match('/<img.+src=/"?(.+/.(jpg|gif|bmp|bnp|png))/"?.+>/i',$word,$matches);
echo $matches[1];
/*正則替換去掉或改變圖片img標(biāo)記中的任意屬性***************************************************************/
$str = '<p height="22" align="cenetr">111 22</p> <img height="60" src="/upload/images/aaa.jpg" width=100 style=><div style="float:left;">中國(guó)人</div>
<p height="22" align="cenetr">31313 224344</p> <img src="/upload/images/bbb.jpg" height="60" width=100 style=><div style="float:left;">1212121</div>';
//改變src屬性(此處將原來(lái)的src="/upload/images/bbb.jpg"改變?yōu)閟rc="/upload/_thumbs/Images/bbb.jpg")
print preg_replace('/(<img.+src=/"?.+)(images//)(.+/.(jpg|gif|bmp|bnp|png)/"?.+>)/i',"/${1}_thumbs/Images//${3}",$str);
/*改變src屬性,
此處將原來(lái)的src="/upload/images/bbb.jpg"改變?yōu)閟rc="/upload/_thumbs/Images/bbb.jpg",并舍棄寬和高
(比如你想在前臺(tái)顯示縮略圖,但數(shù)據(jù)庫(kù)中存儲(chǔ)的是原圖的路徑。為什么要舍棄寬高??你縮略圖啊!還是原圖的寬高,會(huì)怎樣???)
*/
print preg_replace('/(<img).+(src=/"?.+)images//(.+/.(jpg|gif|bmp|bnp|png)/"?).+>/i',"/${1} /${2}_thumbs/Images//${3}>",$str);
?>
相關(guān)文章
PHP實(shí)現(xiàn)批量檢測(cè)網(wǎng)站是否能夠正常打開(kāi)的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)批量檢測(cè)網(wǎng)站是否能夠正常打開(kāi)的方法,涉及php使用自定義函數(shù)及curl操作的相關(guān)技巧,需要的朋友可以參考下2016-08-08
php 函數(shù)使用可變數(shù)量的參數(shù)方法
下面小編就為大家?guī)?lái)一篇php 函數(shù)使用可變數(shù)量的參數(shù)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
PHP二維索引數(shù)組的遍歷實(shí)例分析【2種方式】
這篇文章主要介紹了PHP二維索引數(shù)組的遍歷,結(jié)合實(shí)例形式分析了php使用for循環(huán)與foreach循環(huán)2種方式遍歷數(shù)組的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
PHP7下協(xié)程的實(shí)現(xiàn)方法詳解
最近在學(xué)習(xí)中遇到了協(xié)程,發(fā)現(xiàn)這類(lèi)文章介紹的較少,所以下面這篇文章主要給大家介紹了關(guān)于PHP7下協(xié)程的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
PHP怎么實(shí)現(xiàn)網(wǎng)站保存快捷方式方便用戶隨時(shí)瀏覽
網(wǎng)站保存快捷方式以后在瀏覽起來(lái)就比較方便了,實(shí)現(xiàn)的方法有很多,下面為大家詳細(xì)介紹下使用PHP實(shí)現(xiàn)網(wǎng)站快捷方式的保存,有此需求的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
PHP 程序員的調(diào)試技術(shù)小結(jié)
大家都知道在開(kāi)發(fā)過(guò)程中,代碼的調(diào)式非常重要,對(duì)于一些常見(jiàn)錯(cuò)誤的調(diào)試技巧有助于提高代碼編寫(xiě)的效率。2009-11-11

