登录

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

     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>';

哪里写错了吗

# PHP
高洛峰高洛峰2206 天前490 次浏览

全部回复(2) 我要回复

  • PHPz

    PHPz2017-04-11 10:37:50

    先纠正一下 @丶錵染

    /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>";
    }

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-11 10:37:50

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

    回复
    0
  • 取消回复发送