if ...elseif...else...这样写错了吗,为什么不执行呢?

发布于 2022-09-04 18:43:49 字数 929 浏览 24 评论 0

     if(preg_match('#^http://([a-z0-9])+\.baidu\.com#i',$match[1]))
    {
        return "<a href=\"$match[1]\" target=\"_blank\">$match[1]</a>";
    }
    elseif(preg_match('#^https://([a-z0-9])+\.tmall\.com#i',$match[1]))
    {
        return "<a isconvert=1 href=\"$match[1]\" target=\"_blank\">$match[1]</a>";
    }
    else
    {
        $match[1] = str_replace("http://","",base64_encode($match[1]));
        return '<a href="/link/?url=' . $match[1] . '" rel="nofollow" target="_blank">' . base64_decode($match[1]) . '</a>';
    }

为什么遇到xxx.tmall.com的不执行以下这段代码

return "<a isconvert=1 href=\"$match[1]\" target=\"_blank\">$match[1]</a>";

而是直接执行了

return '<a href="/link/?url=' . $match[1] . '" rel="nofollow" target="_blank">' . base64_decode($match[1]) . '</a>';

哪里写错了吗

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

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

发布评论

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

评论(2

活雷疯 2022-09-11 18:43:49

先纠正一下 @丶錵染

/xxxx/ 中//是定界符,除了字母、数字和反斜线\以外的任何字符都可以为定界符号,所以#并没有问题

天猫百度现在都用https了,可以打印一下 $match[1]看看,或者用如下正则替代

#^https?://([a-z0-9])+\.tmall\.com#i

单看你这一小段代码,不需要用正则也基本可以满足需求

elseif(strpos($match[1],'tmall.com') > 0)
{
    return "<a isconvert=1 href=\"$match[1]\" target=\"_blank\">$match[1]</a>";
}
夏末染殇 2022-09-11 18:43:49

正则表达式写错了,#换为/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文