使用其父级<img>标签的href值的子字符串替换不合格的<a>标签的src值[关闭]

问题描述 投票:0回答:2

我正在使用

file_get_contents
阅读一些文件的内容 这些文件包含一系列链接和图像。理想情况下,它们都应该是这样的。 链接和图像将始终是相同的匹配 8 位数字,如下所示...

<a href='/item/33333333'>
<img src="https://www.example.com/33333333.gif"></a>

<a href='/item/12345678'>
<img src="https://www.example.com/12345678.gif"></a>

有时会显示错误图像而不是 gif 的 URL。这是该错误发生两次的文件的内容...

<a href='/item/77778888'>
<img src="/images/default.svg"></a>

<a href='/item/33333333'>
<img src="https://www.example.com/33333333.gif"></a>

<a href='/item/12345678'>
<img src="https://www.example.com/12345678.gif"></a>

<a href='/item/22225555'>
<img src="/images/default.svg"></a>

所以,我需要我的最终结果是

<a href='/item/77778888'>
<img src="https://www.example.com/77778888.gif"></a>

<a href='/item/33333333'>
<img src="https://www.example.com/33333333.gif"></a>

<a href='/item/12345678'>
<img src="https://www.example.com/12345678.gif"></a>

<a href='/item/22225555'>
<img src="https://www.example.com/22225555.gif"></a>

我不知道如何找出每个

default.svg
之前出现的 8 位数字并替换它。每次出现
default.svg
时,我们是否都必须回顾一定数量的字符才能得到该数字?

谢谢

php html dom replace
2个回答
0
投票

如果该文件是 .php ,也许你应该将主路径存储在某个变量中,例如 laravel 或 yii2 所做的(home_url = $HOME),或者对其进行硬编码。

决赛中应该是:

// Define variables
$itemNumber = '77778888';
$imageUrl = 'https://www.example.com/' . $itemNumber . '.gif';
?>
<a href='/item/<?php echo $itemNumber; ?>'>
    <img src="<?php echo $imageUrl; ?>">
</a>```

0
投票

类似的东西

if (preg_match_all('@<a\s+href=\'/item/(\d{8})\'>\s+<img@', $fileContent, $matches)) {
    foreach ($matches[1] as $id) {
        echo "<a href='/item/$id'>\n<img src='https://www.example.com/$id.gif'></a>\n\n";
}

但是恐怕图像

https://www.example.com/77778888.gif
可能不存在

© www.soinside.com 2019 - 2024. All rights reserved.