PHP - 'preg_replace regex'所有图像的URL

时间:2014-09-28 22:37:26

标签: php regex preg-replace

我尝试用其他图片网址替换所有图片网址,但我没有成功正确编写正则表达式。

我的图片不一定位于带有img的{​​{1}}标记中。

大部分都附有src=""

要替换的内容,例如:

="image url"

1 个答案:

答案 0 :(得分:2)

以下是您的需求:

$content = '[side_section poster="image.jpg" position="left" bgrepeat="no-repeat" bgcolor="#f6f6f6" paddingtop="70" paddingbot="70" txtcolor="" ]';
$newContent = (string) preg_replace('/="([^"]*\.(?:png|jpeg|jpg|gif|bmp))"/', '="./images/placeholder.png"', (string) $content);
echo $newContent;

使用的正则表达式是:="([^"]*\.(?:png|jpeg|jpg|gif|bmp))"

您可以在此处测试: DEMO

但是,用于替换图像路径的字符串应如下所示:'="./images/placeholder.png"'

作为替代方案,使用此功能:

function replaceImg($content, $path)
{
    return (string) preg_replace('/="([^"]*\.(?:png|jpeg|jpg|gif|bmp))"/', '="'.$path.'"', (string) $content);
}   

示例

$content = '[side_section poster="image.jpg" position="left" bgrepeat="no-repeat" bgcolor="#f6f6f6" paddingtop="70" paddingbot="70" txtcolor="" ]';
echo replaceImg($content, './images/placeholder.png');

<强>输出

[side_section poster="./images/placeholder.png" position="left" bgrepeat="no-repeat" bgcolor="#f6f6f6" paddingtop="70" paddingbot="70" txtcolor="" ]

示例2

$content = 'position="left" poster="image.jpg"';
echo replaceImg($content, './images/placeholder.png');

<强>输出

position="left" poster="./images/placeholder.png"