如果 Image 'alt' 属性为空,如何替换它?
How to replace Image 'alt' attribute if its blank?
我想替换内容的图像 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 = '<ahref=><imgalt="Game"></a>';
$content = preg_replace($pattern, $replacement, $content);
}
它工作正常,但问题是,如果该代码已经有数据,它会替换 alt 标签。
谁能指导我如何检查alt标签是否为空,然后根据它替换它的数据。
仅当alt 为空值时才匹配全字符串。捕获保持不变的两个部分并将它们放在 $replacement
:
中默认值 "Game" 的任一侧
方法(Demo):
$pattern ='~(<a.*? href=[^>]*><img.*? alt=")("[^>]*></a>)~i';
$replacement = 'Game';
$content = preg_replace($pattern, $replacement, $content);
echo $content;
Input/Output:
$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>
标签,它也可能有零个或多个其他属性,包含一个必须有空 alt
的 <img>
标签属性,并且可能具有零个或多个其他属性。
如果您不关心检查 <img>
标签是否嵌套在锚标签中,则可以将正则表达式模式简化为仅匹配 <img>
部分。
我想替换内容的图像 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 = '<ahref=><imgalt="Game"></a>';
$content = preg_replace($pattern, $replacement, $content);
}
它工作正常,但问题是,如果该代码已经有数据,它会替换 alt 标签。
谁能指导我如何检查alt标签是否为空,然后根据它替换它的数据。
仅当alt 为空值时才匹配全字符串。捕获保持不变的两个部分并将它们放在 $replacement
:
方法(Demo):
$pattern ='~(<a.*? href=[^>]*><img.*? alt=")("[^>]*></a>)~i';
$replacement = 'Game';
$content = preg_replace($pattern, $replacement, $content);
echo $content;
Input/Output:
$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>
标签,它也可能有零个或多个其他属性,包含一个必须有空 alt
的 <img>
标签属性,并且可能具有零个或多个其他属性。
如果您不关心检查 <img>
标签是否嵌套在锚标签中,则可以将正则表达式模式简化为仅匹配 <img>
部分。