解决方案 »

  1.   

    $content = '<p><img src="http://localhost:8080/story/images/tmp/1403530150545.jpg" style="width: 268px;"><img src="http://localhost:8080/story/images/tmp/1403530147265.jpg" style="width: 268px;">test</p>';$content = preg_replace('#(?<=src="http://localhost:8080/story/images/)tmp/#', 'pub/', $content);
    echo $content;<p><img src="http://localhost:8080/story/images/pub/1403530150545.jpg" style="width: 268px;"><img src="http://localhost:8080/story/images/pub/1403530147265.jpg" style="width: 268px;">test</p>
      

  2.   

    你没有防止贪婪匹配。 $pattern='/(<[img|IMG].+?src=\"?.+?)(images\/tmp\/)(.+?\.(jpg|gif|bmp|bnp|png)\"?.+?>)/';
      

  3.   

    你写的方法加一个参数U就可以了。
    加上U,将懒惰匹配 变成 贪婪匹配。$pattern='/(<[img|IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+>)/U';测试例子:$content = '<p><img src="http://localhost:8080/story/images/tmp/1403530150545.jpg" style="width: 268px;"><img src="http://localhost:8080/story/images/tmp/1403530147265.jpg" style="width: 268px;">test</p>';replace_img_publish_path($content);function replace_img_publish_path($content){
        $pattern='/(<[img|IMG].+src=\"?.+)(images\/tmp\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+>)/U';
        $replacement="\${1}images/pub/\${3}";
        print  preg_replace($pattern, $replacement, $content);
        exit;
    }
    替换后:
    <p><img src="http://localhost:8080/story/images/pub/1403530150545.jpg" style="width: 268px;"><img src="http://localhost:8080/story/images/pub/1403530147265.jpg" style="width: 268px;">test</p>