需要正则表达式来替换图像源的一部分

时间:2011-09-14 14:05:34

标签: php regex preg-replace

我想替换下面的图片来源 http://www.fishingwithdon.com/wp-content/uploads/2006/06/drop_off_area.jpg

http://www.test.com/test/uploads/2006/06/drop_off_area.jpg

意味着我想用“http://www.test.com/test/”替换“http://www.fishingwithdon.com/wp-content/”

但我想要替换的字符串每次都不一样。

任何帮助将不胜感激。

谢谢,

Umesh Kulkarni

4 个答案:

答案 0 :(得分:1)

$str = preg_replace(
    '~\bhttp://www\.fishingwithdon\.com/wp-content/~',
    'http://www.test.com/test/',
    $str
);

http://codepad.org/xTvLGXC8

但在你的情况下,简单的str_replace是否足够?

答案 1 :(得分:1)

preg_replace ('/^(http:).*(\/)$/', 'http://www.test.com/test/', $src)

应该做的伎俩

答案 2 :(得分:0)

$html  = "<img src=\"http://www.fishingwithdon.com/wp-content/uploads/2006/06/drop_off_area.jpg\"/>";
preg_match_all('#<img[^>]*>#i', $html, $match);
if(count($match) > 0)
{
    foreach($match[0] as $image)
    { 
        $new = preg_replace('/http:\/\/www\.(.+)\.com\//', 'http://www.test.com/test/', $image);
        $html = str_replace($image, $new, $html);
    }
}
echo $html;

可以相应修改以适应不同的网址情况,即(非www,non.com,https vs http)

答案 3 :(得分:0)

确定你需要正则表达式吗? str_replace不足够吗?它甚至说:

  

如果你不需要花哨的替换规则(比如正则表达式),你应该总是使用这个函数而不是preg_replace()。

示例:

$replace_needle = 'http://www.fishingwithdon.com/wp-content/';
$replacement = 'http://www.test.com/test/';
$replace_haystack = 'http://www.fishingwithdon.com/wp-content/uploads/2006/06/drop_off_area.jpg';
$result = str_replace($replace_needle, $replacement, $replace_haystack);