将 ID 添加到 href PHP 内的图像

Add ID to an image inside a href PHP

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

我尝试使用 preg_replace 但没有成功。这是 PHP

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

感谢帮助 雅库布

你的问题不是很清楚,所以我在这里做了一些假设,但是像下面这样的问题怎么样?它使用图像的文件名来生成 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,我试图保持简单和切题,所以我没有深入探讨。您的 "real" 脚本可能应该。此外,具有相同路径和名称的两个图像在此脚本中将具有相同的 ID,这将是一个问题。我只是为它替换的每个计数器保留一个计数器,如果它再次找到相同的结果 ID,则在末尾添加一个数字(因此 example 变为 example1 或其他)。同样,您没有说明您是如何决定使用什么作为 ID 的,所以我只是保持简单。