php正则表达式替换HREF属性
如何使用php preg_replace
和正则表达式
删除所有包含
$newlink = preg_replace('/^<a href="#(.*)" (?:.*?)>(.*)<\/a>/is', '', $link);
我想将这些作为锚标记的链接替换
<a href="#part1">go to part1</a>
<a href="#part2">go to part2</a>
<a href="#part3">go to part3</a>
为空值。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
首先我要说的是,使用正则表达式来解析/修改 HTML 文档可能是错误的方法。如果您正在这样做,我建议您查看 DOM 文档这适用于任何其他修改。
话虽如此,使您的表达式非贪婪(
.*?
)可能会起作用。注意: 这还假设
href
是所有锚标记中的第一个属性。这可能是一个糟糕的假设。Let me start by saying that using regular expressions for parsing/modifying HTML documents can be the wrong approach. I'd encourage you to check out DOM Document if you're doing this for any other modifications.
With that said, making your expression non-greedy (
.*?
) will probably work.Note: This also assumes
href
is the first attribute in all you anchor tags. Which may be a poor assumption.它只从 html 中删除 href 属性
It's remove only href attribute from html
如果您只想替换 href 的值,则需要使用断言来匹配它而不匹配其他任何内容。此正则表达式将仅匹配 URL:
If you want to replace only the href's value, you'll need to use assertions to match it without matching anything else. This regex will only match the URL:
谢谢两位,但你们的回答对我来说仍然不起作用。
我不擅长
正则表达式
,看了很多文档,又写了一遍。也许这看起来很丑,但它有效:)Thanks two of all, But both of your answer still not work for me.
I am not good at
regular expression
, I read many documents and write again. maybe this looks ugly, but it work :)请使用
/()/i
正则表达式如果您想测试此正则表达式, ,那么您可以这里
https://regex101.com/r/mT1sVK/1
use
/(<a.*?href=([\'"]))(.*?)(\2.*?>)/i
regexif you wants to test this regex, then you can here
https://regex101.com/r/mT1sVK/1