在PHP中嵌套if else语句以验证URL

时间:2012-10-06 03:28:07

标签: php

我目前正在编写一个函数,以便通过将URL扩展到不同的部分并使用我定义的字符串匹配这些部分来验证URL。这是我到目前为止使用的功能:

function validTnet($tnet_url) {
    $tnet_2 = "defined2";
    $tnet_3 = "defined3";
    $tnet_5 = "defined5";
    $tnet_7 = "";

    if($exp_url[2] == $tnet_2) {
        #show true, proceed to next validation

        if($exp_url[3] == $tnet_3) {
        #true, and next

                if($exp_url[5] == $tnet_5) {
                #true, and last

                        if($exp_url[7] == $tnet_7) {
                        #true, valid
                        }
                }
            }
    } else {
        echo "failed on tnet_2";
    }
}

出于某种原因,我无法想到如何打破嵌套的if语句的代码(或搜索正确的术语)。

我想做的是检查网址的每个部分,从$tnet_2开始,如果它未通过其中一项检查($tnet_2$tnet_3$tnet_5$tnet_7),输出失败,并打破if语句。有没有一种简单的方法可以使用我已经拥有的一些代码来实现这一目标?

2 个答案:

答案 0 :(得分:1)

$is_valid = true;

foreach (array(2, 3, 5, 7) as $i) {
    if ($exp_url[$i] !== ${'tnet_'.$i}) {
        $is_valid = false;
        break;   
    }
}

如果在数组中定义这些值,则可以$tnet[$i]

$tnet = array(
  2 => "defined2",
  3 => "defined3",
  5 => "defined5",
  7 => ""
);

答案 1 :(得分:1)

合并所有if条件

if(
   $exp_url[2] == $tnet_2 && 
   $exp_url[3] == $tnet_3 && 
   $exp_url[5] == $tnet_5 && 
   $exp_url[7] == $tnet_7
) {
  //true, valid
} else {
  echo "failed on tnet_2";
}