boo*_*eep 5 php regex wordpress
我对正则表达式毫无用处,并且无法自己谷歌一个明确的解决方案.
我想用一个新的url(存储为变量$ newurl)为锚点href中的任何url搜索+替换一些文本($ content).
改变这个:
<a href="http://blogurl.com/files/foobar.jpg"><img alt="foobar" src="http://blogurl.com/files/2011/03/foobar_thumb.jpg" /></a>
Run Code Online (Sandbox Code Playgroud)
对此:
<a href="http://newurl.com/here/"><img alt="foobar" src="http://blogurl.com/files/2011/03/foobar_thumb.jpg" /></a>
Run Code Online (Sandbox Code Playgroud)
我想使用preg_replace最适合这个.就像是:
preg_replace('Look for href="any-url"',
'href="$newurl"',$content);
Run Code Online (Sandbox Code Playgroud)
我们的想法是将WordPress首页上的所有图像链接到他们的帖子而不是全尺寸图像(这是他们默认的方式).通常只有一个网址可以替换,但我不认为替换所有可能的匹配会有害.
希望所有这些都有意义并提前感谢!
这是我提出的要点.希望它可以帮助某人:
$content = get_the_content();
$pattern = "/(?<=href=(\"|'))[^\"']+(?=(\"|'))/";
$newurl = get_permalink();
$content = preg_replace($pattern,$newurl,$content);
echo $content;
Run Code Online (Sandbox Code Playgroud)
Mucho thanko到@WiseGuyEh
这应该做的 - 你可以在这里测试它
(?<=href=("|'))[^"']+(?=("|'))
Run Code Online (Sandbox Code Playgroud)
它使用lookahead和lookbehind断言它匹配的任何东西都以href ="或href ='开头,并确保它以单引号或双引号结束.
注意:正则表达式将无法确定这是否是一个有效的html文档 - 如果混合使用单引号和双引号用于包含href值,它将忽略此错误!