如果空白,如何替换图像'alt'属性?

时间:2017-05-29 09:06:12

标签: php regex wordpress preg-replace alt

我想替换内容的图片alt标签。所以我使用了preg_replace

add_filter('the_content', 'click_to_expand_gallery');
function click_to_expand_gallery($content) {
        $pattern ='~<a(.*?)href=(.*?)><img(.*?)alt="(.*?)"></a>~i';
        $replacement = '<a$1href=$2><img$3alt="Game"></a>';
        $content = preg_replace($pattern, $replacement, $content);
    }

它工作正常,但问题是,如果已经有数据,此代码正在替换alt标记。

有人可以指导我如何检查alt标签是否为空白,然后根据它替换其数据。

1 个答案:

答案 0 :(得分:2)

当alt为空值时,仅匹配fullstring。捕获保持不变的两个部分并将它们放在默认值的任意一侧&#34; Game&#34;在- src - app - assets image.jpg

方法(Demo):

$replacement

输入/输出:

$pattern ='~(<a.*? href=[^>]*><img.*? alt=")("[^>]*></a>)~i';
$replacement = '$1Game$2';
$content = preg_replace($pattern, $replacement, $content);
echo $content;

Pattern Demo

现在,这实际上将$content='<a href="something.com"><img src="blah.jpg" alt=""></a>'; // output: <a href="something.com"><img src="blah.jpg" alt="Game"></a> $content='<a href="something.com"><img src="blah.jpg" alt="Not Empty"></a>'; // output: <a href="something.com"><img src="blah.jpg" alt="Not Empty"></a> 标记与href属性匹配,并且可能还包含零个或多个其他属性,其中包含必须具有空<a>属性的<img>标记,可能有零个或多个其他属性。

如果您不关心检查alt标记是否嵌套在锚标记中,则可以将正则表达式模式缩小为仅匹配<img>部分。