使用 php preg_replace 更改 html 链接的 href 属性

发布于 2024-12-29 19:50:26 字数 349 浏览 0 评论 0原文

我正在尝试用不同的 URL 替换大字符串中的所有链接 href。使用以下代码似乎只替换了第二个链接,而第一个链接完好无损,有人可以帮助我吗?

$string_of_text = '<a href="http://www.php.net/">PHP</a> <a href="http://www.apache.org/">Apache</a>';
echo preg_replace('/<a(.*)href="(.*)"(.*)>/','<a$1href="javascript:alert(\'Test\');"$3>',$string_of_text);

I'm trying to replace all link href's in a large string with a different URL. With the following code It seems to replace only the 2nd link leaving the first one intact, can someone help me out?

$string_of_text = '<a href="http://www.php.net/">PHP</a> <a href="http://www.apache.org/">Apache</a>';
echo preg_replace('/<a(.*)href="(.*)"(.*)>/','<a$1href="javascript:alert(\'Test\');"$3>',$string_of_text);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

剑心龙吟 2025-01-05 19:50:26

使用任何非 (^) 引号 [^"] 代替任何字符 .

echo preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="javascript:alert(\'Test\');"$3>',$string_of_text);

Instead of any char . use any not (^) quote [^"]

echo preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="javascript:alert(\'Test\');"$3>',$string_of_text);
第几種人 2025-01-05 19:50:26

只需在正则表达式中使用贪婪运算符,如下所示:

'/<a(.*?)href="(.*?)"(.*?)>/'

Just use the greedy operator in your regex like this:

'/<a(.*?)href="(.*?)"(.*?)>/'
∞琼窗梦回ˉ 2025-01-05 19:50:26

对 Aurelio De Rosa 的答案稍作修改:

'/<a(.*?)href=(["\'])(.*?)\\2(.*?)>/i'

Slight modifications to Aurelio De Rosa's answer:

'/<a(.*?)href=(["\'])(.*?)\\2(.*?)>/i'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文