使用str_replace和regex重写HTML锚点

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

以下内容通过编辑器自动输出:

<a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>

我想添加一个ID:

<a id="replace" href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>

然后使用str_replace和正则表达式查找有问题的锚点并替换为:

<a href="https://someurl.com/1001-web-file.pdf"><img src="https://someurl.com/1001-web-file-pdf-290x300.jpg"/></a>

我设法做的是:

$replace = array(
'<a id="pdfthumb" href="' => '<img src="',
'.pdf">pdfthumb</a>' => '-pdf-290x300.jpg"/></br>'
);

$text = str_replace(array_keys($replace), $replace, $text);
return $text;

这将拆除锚标记并作为img重建。但是我不能做更多的事情。我使用了一些正则表达式来创建通配符,并意识到我需要创建一个变量以供href重建HTML时使用,但是我遇到了麻烦。

任何见识都值得赞赏:)

php regex str-replace
2个回答
1
投票

就您而言,如果您使用JavaScript在客户端进行操作,我认为它应该会更容易。

我的背景不是PHP,但是您可以使用相同的模式来测试PHP代码:

输入:

<a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>

输出:

<a href="https://someurl.com/1001-web-file.pdf"><img src="https://someurl.com/1001-web-file-pdf-290x300.jpg"/></a>

var input = '<a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>';

var pattern = /href=\"(.+)\.pdf\"/;

var match = input.match(pattern)[1];

input = input.replace(/(<a.*>).*(<\/a>)/, '$1<img src="' + match + '-pdf-290x300.jpg">$2');

console.log(input)

0
投票

这里是Tan javascript的翻译php代码答案

$input = '<a href="https://someurl.com/1001-web-file.pdf">1001-web-file</a>';
preg_match('/href="(.+)\.pdf"/', $input, $m);
$match = $m[1];
$input = preg_replace('/(<a.*>).*(<\/a>)/', '$1<img src="'. $match .'-pdf-290x300.jpg">$2', $input);
echo $input;
© www.soinside.com 2019 - 2024. All rights reserved.