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

查看:92
本文介绍了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>';

哪里写错了吗

解决方案

先纠正一下 @丶錵染

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

这篇关于php - if ...elseif...else...这样写错了吗,为什么不执行呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆