为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
白板的微信 2022-07-16 18:20:55
以下是通过编辑器自动输出的:<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 时使用,但我被卡住了。
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

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


查看完整回答
反对 回复 2022-07-16
?
喵喔喔

TA贡献1735条经验 获得超5个赞

这是 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;


查看完整回答
反对 回复 2022-07-16
  • 2 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号