preg replace -将ID添加到href PHP中的图像中



我需要在<a></a>内的所有图像中找到并添加ID给它们。它只能应用于<a href..></a>中的图像,而不能应用于content中的所有图像。

我尝试使用preg_replace,但不成功。这是PHP

$content = preg_replace(array('{<a[^>]*><img}'), array(' *add ID to every match *'), $content);

谢谢你的帮助Jakub

你的问题不是很清楚,所以我在这里做了一些假设,但是像下面这样的东西呢?它使用图像的文件名来生成ID。

还有,我有点睡眠不足,所以我不能保证这在所有情况下都有效,等等。但是,它适用于我的简单示例,所以它可能是一个不错的起点。

<?php
$test = '
    <a href="#"><img src="example-1.png" /></a>
    <a href="#"><img src="example-2.png" /></a>
    <img src="example-3.png" />
    <img src="example-4.png" />
';
$out = preg_replace_callback(
'|(<a.+?>)<img src="(.+?).(.{3})|',
function ($matches) {
        return $matches[1].'<img id="'.$matches[2].'" src="'.$matches[2].'.'.$matches[3];
},
$test
);

echo $test;
echo $out;
?>
给了

:

<a href="#"><img src="example-1.png" /></a>
<a href="#"><img src="example-2.png" /></a>
<img src="example-3.png" />
<img src="example-4.png" />
<a href="#"><img id="example-1" src="example-1.png" /></a>
<a href="#"><img id="example-2" src="example-2.png" /></a>
<img src="example-3.png" />
<img src="example-4.png" />

编辑:作为一个小注意事项,您可能希望在使用它之前对生成的ID做一些事情,例如,可能将所有/字符替换为-。我试图让它保持简单,并在这里找到正确的图像和添加合理的ID,所以我没有进入那个。您的"真实"脚本可能应该这样做。此外,具有相同路径和名称的两个图像将具有与此脚本相同的ID,这将是一个问题。我只是为它替换的每个人保留一个计数器,如果它再次找到相同的结果ID,在末尾添加一个数字(因此example变成example1或其他)。同样,您没有说明您是如何决定使用什么作为ID的,所以我只是保持简单。

最新更新