有一段html代码,里面包含很多标签,同时包含有很多的img标签,现在,需要用php语言将所有的img标签的src图片地址提取出来后,经过我的一段程序处理生成自己服务器下的图片地址,将原先的src图片地址替换成我程序处理后的地址。
并且保证图片地址替换后的img标签与原先的img标签在html代码中的位置是一样的。
PHPHTML图片

解决方案 »

  1.   

    这个用正则可以实现
        <?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>";    }    ?> 代码运行结果将显示所有抓取的图片。
      

  2.   

    $string='你的内容';
    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;    
    }