猿问

使用 str_replace 和正则表达式重写 HTML 锚

以下是通过编辑器自动输出的:


<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 时使用,但我被卡住了。

白板的微信
浏览 166回答 2
2回答

桃花长相依

就您而言,我认为如果您在客户端使用 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)

喵喔喔

这是 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;
随时随地看视频慕课网APP
我要回答