php正則取img標記中任意屬性(正則替換去掉或改變圖片img標記中的任意屬性)_php技巧

來源:互聯網
上載者:User
因有一項目新聞發布系統,資料庫內容欄位中儲存的是原圖的路徑(當然還有其他文字內容啦,內容裡插圖時,存的是圖片路徑),但前台想使用縮圖,琢磨1小時餘,得到以下結果,可解決問題(取img標籤會了,取別的標籤任意屬性自然也會了):

複製代碼 代碼如下:

<?php
/*正則取圖片img標記中的任意屬性*/

$word = '<p height="22" align="cenetr">111 22</p> <img src="http://files.jb51.net/upload/images/aaa.jpg" width="100"><div style="float:left;">中國人</div>';
//取整個圖片代碼
preg_match('/</s*img/s+[^>]*?src/s*=/s*(/'|/")(.*?)//1[^>]*?//?/s*>/i',$word,$matches);
echo $matches[0];//結果:<img src="http://files.jb51.net/upload/images/aaa.jpg" width="100">

$word = '<p height="22" align="cenetr">111 22</p> <img height="60" src="http://files.jb51.net/upload/images/aaa.jpg" width=100 style=><div style="float:left;">中國人</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標記中的任意屬性***************************************************************/
$str = '<p height="22" align="cenetr">111 22</p> <img height="60" src="http://files.jb51.net/upload/images/aaa.jpg" width=100 style=><div style="float:left;">中國人</div>
<p height="22" align="cenetr">31313 224344</p> <img src="http://files.jb51.net/upload/images/bbb.jpg" height="60" width=100 style=><div style="float:left;">1212121</div>';

//改變src屬性(此處將原來的src="http://files.jb51.net/upload/images/bbb.jpg"改變為src="http://files.jb51.net/upload/_thumbs/Images/bbb.jpg")
print preg_replace('/(<img.+src=/"?.+)(images//)(.+/.(jpg|gif|bmp|bnp|png)/"?.+>)/i',"/${1}_thumbs/Images//${3}",$str);

/*改變src屬性,
此處將原來的src="http://files.jb51.net/upload/images/bbb.jpg"改變為src="http://files.jb51.net/upload/_thumbs/Images/bbb.jpg",並捨棄寬和高
(比如你想在前台顯示縮圖,但資料庫中儲存的是原圖的路徑。為什麼要捨棄寬高??你縮圖啊!還是原圖的寬高,會怎樣???)
*/
print preg_replace('/(<img).+(src=/"?.+)images//(.+/.(jpg|gif|bmp|bnp|png)/"?).+>/i',"/${1} /${2}_thumbs/Images//${3}>",$str);
?>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.