将ID添加到href PHP中的图像

时间:2015-05-27 16:46:37

标签: php preg-replace

我需要找到<a></a>内的所有图片并为其添加ID。它必须仅应用于<a href..></a>内的图像,而不应用于内容中的所有图像。

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

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

感谢您的帮助 的Jakub

1 个答案:

答案 0 :(得分:0)

你的问题并不是那么清楚,所以我在这里做了一些假设,但是如下所示呢?它使用图像的文件名来生成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的,所以我只是保持简单。