正则表达式搜索+替换 href="URL"

Posted

技术标签:

【中文标题】正则表达式搜索+替换 href="URL"【英文标题】:Regular Expression to Search+Replace href="URL" 【发布时间】:2011-07-09 12:08:30 【问题描述】:

我对正则表达式毫无用处,也无法通过 Google 自己找到一个明确的解决方案。

我想用新的 url(存储为变量 $newurl)搜索并替换锚的 href 内的任何 url 的一些文本($content)。

改变这个:

<a href="http://blogurl.com/files/foobar.jpg"><img  src="http://blogurl.com/files/2011/03/foobar_thumb.jpg" /></a>

对此:

<a href="http://newurl.com/here/"><img  src="http://blogurl.com/files/2011/03/foobar_thumb.jpg" /></a>

我想使用 preg_replace 将是最好的。比如:

preg_replace('Look for href="any-url"', 
'href="$newurl"',$content);

这个想法是让 WordPress 首页上的所有图片链接到他们的帖子,而不是全尺寸图片(这是他们默认的方式)。通常只有一个 url 可以替换,但我认为替换所有可能的匹配项不会有什么坏处。

希望所有这些都有意义,并在此先感谢!

【问题讨论】:

【参考方案1】:

这是我想出的要点。希望它可以帮助某人:

$content = get_the_content();
$pattern = "/(?<=href=(\"|'))[^\"']+(?=(\"|'))/";
$newurl = get_permalink();
$content = preg_replace($pattern,$newurl,$content);

echo $content;

非常感谢@WiseGuyEh

【讨论】:

不错的脚本。但是如何用不同的值一一替换大 html 页面中的链接?【参考方案2】:

这应该可以解决问题-您可以对其进行测试here

(?<=href=("|'))[^"']+(?=("|'))

它使用lookahead and lookbehind 断言它匹配的任何内容都以 href="href=' 开头,并确保它以单引号或双引号结尾。

注意:正则表达式将无法确定这是否是一个有效的 html 文档 - 如果混合使用单引号和双引号来括住 href 值,它将忽略此错误!

【讨论】:

奖励积分:如何修改它以仅返回第一个匹配项?

以上是关于正则表达式搜索+替换 href="URL"的主要内容,如果未能解决你的问题,请参考以下文章

PythonPycharm Regex matches

用于替换 URL 中的页码的正则表达式

正则表达式基础

正则表达式替换链接的url

java用正则表达式判定特殊字符是不是,存在就替换的问题?

php如何使用正则表达式匹配url图片啊