$rule='/\<img(?:\s.*)?src=[\'\"]?([^\'\"].+)[\"\']?(?:\s.*)?\>/U';
preg_match_all($rule,$content,$imgUrlArray);
foreach((array)$imgUrlArray[1] as $val){
if(substr($val,0,7)!='http://'){
    echo "请把相对路径转换成绝对路径:".$val."<br>\n";
}
elseif (!copy($val, basename($val))){
    echo "远程服务器不支持本方式获取文件:".$val.",请尝试socket!<br>\n";
}
else{
echo "copy".$val."成功。访问地址为:http://".$_SERVER['HTTP_HOST'].array_shift(pathinfo($_SERVER['PHP_SELF'])).'/'.basename($val)."<br>\n";
}
}

解决方案 »

  1.   

    /**
    *把编辑器里的图片上传到本地,并替换URL *param $content 内容
    *@return 返回更改后的内容
    **/
    function upPicFile($content)
    {

    //查找内容中图片地址的正则

    $preg="/<img[^>]+src=\"?((http:\/\/)?(www.)?[^>]+[jpg|gif|png])\"?[^>]+>/i";
        //正则匹配
    preg_match_all($preg,$content,$records);
         
        //循环内容中的URL
    for($i=0;$i<count($records[1]);$i++)
    {
              //验证是否已是绝对路径
              preg_match("/(http:\/\/)?(www.)?.*\..*\//i",$records[1][$i],$isAbs);
             
     //如果是相对路径,则加上前缀 
     if(!$isAbs)
     {
       $content=str_replace($records[1][$i], SITEURL.$records[1][$i],$content);
       //echo "test"; 
     }
     else
     {
                //验证图片是否已是本地图片
        $localAddress=str_replace('/', '\/', SITEURL);
                preg_match("/".$localAddress."/",$records[1][$i],$isLocal);            //如果不是
                if(!$isLocal)
        {
                  //图片的URL 
                  $picPath=$records[1][$i];//substr($records[1][$i],strrpos($records[1][$i],".")+1
          //获取文件后辍名
          $fileType=substr($picPath,strrpos($picPath,".")+1);
                  //文件保存路径和名称
         
      $filePath="/FCKeditor/UserFiles/Image/".date("Ymd_His",time())."_".$i.".".$fileType;
         
      
      //上传图片保存到本地,如果成功,则替换URL
          if(copy($picPath,SITE_ROOT_PATH.$filePath))
          {
                    $content=str_replace($picPath, SITEURL.$filePath,$content);
          } 

        }
     }
    }
        
           return $content; 
    }
      

  2.   


    上传不了图片,没有办法本地化。然后他又在前面多加了东西。变成 http://我的域名/图片所在域名/图片地址/
      

  3.   

    $preg="/ <img[^>]+src=\"?((http:\/\/)?(www.)?[^>]+[jpg ¦gif ¦png])\"?[^>]+\/img>/i"; 
        //正则匹配  preg_match_all($preg,$content,$records); 
     
     //echo $records; 
     echo count($records[1]);
    显示 0