2013年6月2日星期日

PHP匹配出文本中全部的标签,然后更换路径

 <?php
//有时候可能需要要将HTML代码中的全部图片路径匹配出来然后更改路径。网上的一些方法,搜了那么多,都感觉不是那么靠谱与精准,不是我想要的。
//1.先假如有一段HTML的代码:
      $content = '<img alt="" src="http://www.tefee.net/js/fckeditor/UserFiles/image/F201005201210502415831196.jpg" width="600" height="366">
 <br><br><br><br><img alt="" src="js/fckeditor/UserFiles/image/33_avatar_middle.jpg" width="120" height="120">';

       //当然也可以用file_get_content()方法去获取一个HTML的文件,这个方法不理解的话,可以去查手册,就是将文件读入一个字符串中去。

       //2.将全部的<img>标签都匹配出来。

       preg_match_all("/<img(.*)src=\"([^\"]+)\"[^>]+>/isU",$content,$matches);

       //这个匹配很详细,大家不妨将$matched用print_r()打印出来看看效果,记住前后用上<pre>标签更形象哦。完整的<img>标签是在$matches[2]这个第二维数组中的。
 
      // 3.得到全部的<img>完整标签。

       if(!empty($matches)){
                $img = $matches[2];
      }else{
                $img = "";
      }
      print_r($img);
 
      // 4.得到图片路径并更换。
       foreach($img as $val){
               preg_match("/^.*\//",$val,$res);                     //先匹配出来图片存储的路径
               echo "<br/>";
               echo str_replace($res[0],"images/",$val);          //将路径全部改成"images/"
        }
?>