0

我目前正在编写一个函数,以便通过将 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 语句的编码方式(或搜索适当的术语)。

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

4

2 回答 2

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 => ""
);
于 2012-10-06T03:34:45.763 回答
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";
}
于 2012-10-06T04:33:05.043 回答