本人是新手,以为目前正在学习 wordpress 建站,所以开始学习一些 php 语言 目前遇到一个问题,我需要将网站中的所有下载网址的链接转换为 go 跳转链接,经测试如下代码
//给外部链接加上跳转
add_filter('the_content','the_content_nofollow',999);
function the_content_nofollow($content)
{
preg_match_all('/<a(.?)href="(.?)"(.*?)>/',$content,$matches);
if($matches){
foreach($matches[2] as $val){
if(strpos($val,'://')!==false && strpos($val,home_url())===false && !preg_match('/.(jpg|jepg|png|ico|bmp|gif|tiff)/i',$val)){
$content=str_replace("href="$val"", "href="".home_url()."/go/?url=$val" ",$content);
}
}
}
return $content;
}
这个代码会将所有的非本站链接自动跳转到 /go/目录下的跳转链接页面,但是存在两个问题: 一是对于中间带有#号的链接,就只能截取#号前的部分,#号以后部分无法截取,比如: https://www.XXX.com/dsajldklasdlsdk#dkcnjjjjlsdlkl 这个网址,就只能截取 https://www.XXX.com/dsajldklasdlsdk# 后面的 dkcnjjjjlsdlkl 截取不到。 二是这个代码会将所有的外部链接都跳转,可是我只需要对指定链接跳转,比如,只跳转 www.baidu.com 以及 www.google.com 开头的链接,其他链接都不跳转,那么我该如何修改这个 preg_match_all 后面的代码呢,请指教或者指点一个方向,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.