如何使用php preg_replace
和regular expression
删除包含<a href="#
的所有超链接。这是我写的,但它不起作用
$newlink = preg_replace('/^<a href="#(.*)" (?:.*?)>(.*)<\/a>/is', '', $link);
我想将这些链接替换为anchor mark
<a href="#part1">go to part1</a>
<a href="#part2">go to part2</a>
<a href="#part3">go to part3</a>
为空值。
答案 0 :(得分:3)
首先让我说使用正则表达式来解析/修改HTML文档可能是错误的方法。如果您正在进行任何其他修改,我建议您查看DOM Document。
话虽如此,让你的表达非贪婪(.*?
)可能会奏效。
$newlink = preg_replace('/^<a href="#(.*?)"[^>]+>(.*?)<\/a>/', '', $link);
注意:这也假定href
是所有锚标记中的第一个属性。这可能是一个不好的假设。
答案 1 :(得分:1)
它只从html
中删除了href属性echo preg_replace('/(<[^>]+) href=".*?"/i', '$1', $content);
答案 2 :(得分:0)
如果您只想替换href的值,则需要使用断言来匹配它而不匹配任何其他值。此正则表达式仅匹配URL:
/(?<=<a href=")#.*?(?=")/
答案 3 :(得分:0)
非常感谢,但你的答案对我来说仍然不起作用。
我不擅长regular expression
,我读了很多文件然后再写一遍。也许这看起来很难看,但它有效:)
$newlink = preg_replace('/(<a href=")#.*?(<\/a>)/is', '', $link);