如果问题有点

时间:2010-07-21 11:49:57

标签: php

以下代码:

<?php
$str = "19.09.02";
if(substr($str, -3, 2) == ".0")
{
    // Doing something
}

$str2 = "19.09.2002";
if(substr($str2, -3, 2) == ".0")
{
    // Doing something
}
?>

为什么第二个语句适用(没有regexp)?我怎么解决,它只是应用第一个表达式?

谢谢

3 个答案:

答案 0 :(得分:6)

我认为您应该使用identity(===)运算符来解决此问题:)

=== vs ==的主要区别之一是===根本不投,这是一个非常严格的比较。

答案 1 :(得分:0)

只需写===而不是==

您还可以使用以下内容:

if(preg_match("!([0-9]{2}).([0-9]{2}).([0-9]{2,4})!", $str, $found)){
    list($day, $month, $year) = array_shift($found);

    if(strlen($year)==4){
        //must be 4
    }else{
        //must be 2...
    }
}

答案 2 :(得分:0)

尝试===运算符。问题是在这两种情况下返回的值都是0,并且它与另一个值进行比较。