php preg_match_all結(jié)合str_replace替換內(nèi)容中所有img
更新時(shí)間:2008年10月11日 22:37:27 作者:
最近做站的時(shí)候,采集了大量的數(shù)據(jù),但采回來的數(shù)據(jù)基本上都要經(jīng)過過濾原站保留的數(shù)據(jù),其中IMG就是一個(gè)地方。網(wǎng)站上好多這些應(yīng)用例子似乎沒有必要“秀”出來,但站已幾天沒寫日志,那就來一個(gè)吧
采集回來的圖片img標(biāo)簽中,有好多javascript腳本和無用的信息,必需過替換自己想要的,比如alt。先看看要過濾的內(nèi)容,我隨便復(fù)制出來:
sdfsdfsdf<img alt=”3568df.com靚圖” src=”http://www.aaa.com/upimg /080330/120D1232295023X0.gif” src=”http://www.eee.com/upimg/080330 /120D1232295023X0.gif” width=1 onclick=”javascript:; ” onload=”javascript:if(this.width>500){this.resized=true; this.style.width=500;}”>sfsdfsdfasdfsadf<img alt=”3568df.com靚圖 ” src=”http://www.3568.com/upimg/080330 /120D1232295023X0.gif” src=”http://www.ddd.com/upimg/080330 /120D1232295023X0.gif” width=1 onclick=”javascript:; ” onload=”javascript:if(this.width>500){this.resized=true; this.style.width=500;}”>sdfsadf<img alt=”3568df.com靚圖 ” src=”http://www.xxx.com/upimg/080330/120D1232295023X0.gif” src=”http://www.sss.com/upimg/080330/120D1232295023X0.gif” width=1 onclick=”javascript:;” onload=”javascript:if(this.width>500){this.resized=true;this.style.width=500;}”>sdfsdf
要把上面替換成形如:
<img alt=”我的信息” src=”http://www.xxx.com/upimg /080330/120D1232295023X0.gif” src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif” /> 其中src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif” src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif”這個(gè)地址要保留,因?yàn)閳D片用的都是源地址
方法大致是:先讀取內(nèi)容里的所以IMG標(biāo)簽,然后把每個(gè)IMG標(biāo)簽的SRC抽取出來,并且組合成自己的內(nèi)容,最后進(jìn)行替換。
preg_match_all就是我想要的函數(shù),它能夠把正則表達(dá)式匹配到的內(nèi)容建立一個(gè)三維數(shù)組,你可以對(duì)它們進(jìn)行遍歷查找替換,不太了解的請(qǐng)查查手冊(cè),這里不作具體介紹。函數(shù)代碼:
function replace($str)
{
preg_match_all(”/<img(.*)(src=\”[^\"]+\”)[^>]+>/isU”, $str, $arr);
for($i=0,$j=count($arr[0]);$i<$j;$i++){
$str = str_replace($arr[0][$i],”<img alt=\”我的信息” “.$arr[2][$i].” />”,$str);
}
return $str;
}
復(fù)制代碼 代碼如下:
sdfsdfsdf<img alt=”3568df.com靚圖” src=”http://www.aaa.com/upimg /080330/120D1232295023X0.gif” src=”http://www.eee.com/upimg/080330 /120D1232295023X0.gif” width=1 onclick=”javascript:; ” onload=”javascript:if(this.width>500){this.resized=true; this.style.width=500;}”>sfsdfsdfasdfsadf<img alt=”3568df.com靚圖 ” src=”http://www.3568.com/upimg/080330 /120D1232295023X0.gif” src=”http://www.ddd.com/upimg/080330 /120D1232295023X0.gif” width=1 onclick=”javascript:; ” onload=”javascript:if(this.width>500){this.resized=true; this.style.width=500;}”>sdfsadf<img alt=”3568df.com靚圖 ” src=”http://www.xxx.com/upimg/080330/120D1232295023X0.gif” src=”http://www.sss.com/upimg/080330/120D1232295023X0.gif” width=1 onclick=”javascript:;” onload=”javascript:if(this.width>500){this.resized=true;this.style.width=500;}”>sdfsdf
要把上面替換成形如:
復(fù)制代碼 代碼如下:
<img alt=”我的信息” src=”http://www.xxx.com/upimg /080330/120D1232295023X0.gif” src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif” /> 其中src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif” src=”http://www.xxx.com/upimg/080330 /120D1232295023X0.gif”這個(gè)地址要保留,因?yàn)閳D片用的都是源地址
方法大致是:先讀取內(nèi)容里的所以IMG標(biāo)簽,然后把每個(gè)IMG標(biāo)簽的SRC抽取出來,并且組合成自己的內(nèi)容,最后進(jìn)行替換。
preg_match_all就是我想要的函數(shù),它能夠把正則表達(dá)式匹配到的內(nèi)容建立一個(gè)三維數(shù)組,你可以對(duì)它們進(jìn)行遍歷查找替換,不太了解的請(qǐng)查查手冊(cè),這里不作具體介紹。函數(shù)代碼:
復(fù)制代碼 代碼如下:
function replace($str)
{
preg_match_all(”/<img(.*)(src=\”[^\"]+\”)[^>]+>/isU”, $str, $arr);
for($i=0,$j=count($arr[0]);$i<$j;$i++){
$str = str_replace($arr[0][$i],”<img alt=\”我的信息” “.$arr[2][$i].” />”,$str);
}
return $str;
}
您可能感興趣的文章:
- PHP利用str_replace防注入的方法
- PHP的substr_replace將指定兩位置之間的字符替換為*號(hào)
- PHP中str_replace函數(shù)使用小結(jié)
- 詳解PHP字符串替換str_replace()函數(shù)四種用法
- str_replace只替換一次字符串的方法
- php使用str_replace實(shí)現(xiàn)輸入框回車替換br的方法
- php str_replace替換指定次數(shù)的方法詳解
- php 中的str_replace 函數(shù)總結(jié)
- php str_replace的替換漏洞
- 因str_replace導(dǎo)致的注入問題總結(jié)
相關(guān)文章
PHP查詢MySQL大量數(shù)據(jù)的時(shí)候內(nèi)存占用分析
這篇文章主要是從原理, 手冊(cè)和源碼分析在PHP中查詢MySQL返回大量結(jié)果時(shí), 內(nèi)存占用的問題, 同時(shí)對(duì)使用MySQL C API也有涉及.2011-07-07PHP 使用MySQL管理Session的回調(diào)函數(shù)詳解
本篇文章文章是對(duì)PHP中使用MySQL管理Session的回調(diào)函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06PHP+SQL 注入攻擊的技術(shù)實(shí)現(xiàn)以及預(yù)防辦法
最近在折騰 PHP + MYSQL 的編程。了解了一些 PHP SQL 注入攻擊的知識(shí),總結(jié)一下經(jīng)驗(yàn)。在我看來,引發(fā) SQL 注入攻擊的主要原因,是因?yàn)橐韵聝牲c(diǎn)原因2011-01-01