正则表达式帮助 - 我怎样才能使某些网址不被关注?

发布于 2024-09-10 11:10:49 字数 742 浏览 11 评论 0原文

好的,我已经制作了这个函数,可以很好地将大多数 url(如 pies.com 或 www.cakes.com)转换为实际的链接标记。

function render_hyperlinks($str){       
    $regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
    $str = preg_replace($regex,"'<a href=\"http://www.'.'$3'.'\" target=\"_blank\">'.strtolower('$3').'</a>'", $str);
    return $str;    
}

我想更新此功能以添加 no-follow 标签来链接到我的竞争对手,

这样我就会有某些关键字(竞争对手名称)为 nofollow,例如,如果我的网站是关于烘焙的,我可能想要:

no-follow any sites with the phrases 'bakingbrothers', 'mrkipling', 'lyonscakes'

是否可以将这个 if(contains x){ add y} 实现到我的正则表达式中?

这就是所谓的“回顾”吗?

Ok so i've made this function which works fine for converting most urls like pies.com or www.cakes.com to an actual link tag.

function render_hyperlinks($str){       
    $regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
    $str = preg_replace($regex,"'<a href=\"http://www.'.'$3'.'\" target=\"_blank\">'.strtolower('$3').'</a>'", $str);
    return $str;    
}

I would like to update this function to add no-follow tags to links to my competitors,

so i would have certain keywords (competitor names) to nofollow for example if my site was about baking i might want to:

no-follow any sites with the phrases 'bakingbrothers', 'mrkipling', 'lyonscakes'

is it possible to implement this if(contains x){ add y} into my regex?

is this what is called a 'lookback'?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沧桑㈠ 2024-09-17 11:10:49

也许 preg_replace_callback 就是您正在寻找的:

function link($matches)
{
    $str_return = '<a href="http://www.'.$matches[3].'" target="_blank"';
    if(in_array($matches[3], $no_follow_array))
    {
        $str_return .= ' no-follow';
    }
    $str_return .='>'.strtolower($matches[3]).'</a>';
}

$regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
$str = preg_replace_callback($regex,'link', $str);

Maybe preg_replace_callback is what you are looking for:

function link($matches)
{
    $str_return = '<a href="http://www.'.$matches[3].'" target="_blank"';
    if(in_array($matches[3], $no_follow_array))
    {
        $str_return .= ' no-follow';
    }
    $str_return .='>'.strtolower($matches[3]).'</a>';
}

$regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';    
$str = preg_replace_callback($regex,'link', $str);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文