有一段html代码,里面包含很多标签,同时包含有很多的img标签,现在,需要用php语言将所有的img标签的src图片地址提取出来后,经过我的一段程序处理生成自己服务器下的图片地址,将原先的src图片地址替换成我程序处理后的地址。
并且保证图片地址替换后的img标签与原先的img标签在html代码中的位置是一样的。
PHPHTML图片
并且保证图片地址替换后的img标签与原先的img标签在html代码中的位置是一样的。
PHPHTML图片
<?php $url="http://www.ggggggg.com"; //file_get_contents() 函数把整个文件读入一个字符串中 $string=file_get_contents($url); //preg_match_all函数进行全局正则表达式匹配。 preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $string,$matches);//带引号 //preg_match_all("/<img([^>]*)\ssrc=([^\s>]+)/",$string,$matches);//不带引号 $new_arr=array_unique($matches[0]);//去除数组中重复的值 foreach($new_arr as $key){ echo $key."</br>"; } ?> 代码运行结果将显示所有抓取的图片。
preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $string,$matches);
$new_arr=array_unique($matches[2][0]);//去除数组中重复的值
foreach($new_arr as $key=>$val){
$picurl=get_name($val);//这里处理图片并得到处理后的地址
str_replace($val,$picurl,$string);
}
function get_name($pic_item,$path='upload/')
{
$pic_name = $path.get_unique().'.jpg';//改时微秒时间戳命名
$write_fd = @fopen($pic_name,"wb");
@fwrite($write_fd, CurlGet($pic_item));
@fclose($write_fd);
return $pic_name;
}