如果条件不适用于strpos

时间:2017-01-04 09:54:47

标签: php function strpos

我创建了自定义函数OutputMessage,我在其中插入了ClassStyle错误消息,就像这样Error: image upload failed!,然后我爆炸了字符串并从中拆分了类加入div class,但我的功能不正常。

function OutputMessage($Message=''){
    if($Message){
        $Postion = strpos($Message,":");
        if($Postion !== TRUE){
            return sprintf('<div class="alert alert-default">%s</div>',$Message); 
        }else{
            $Message = explode(": ",$Message);
            return sprintf('<div class="alert alert-%s">%s</div>',strtolower($Message[0]),$Message[1]); 
        }
    }else{
        return "";
    }
}

$Position检查无法正常工作,因为我正在将消息传递给它,但它仍在返回默认类

6 个答案:

答案 0 :(得分:3)

为什么你不能达到这样的目标....

function OutputMessage($Message = NULL){
    if(is_null($Message){
        return;
    }
    else {

        $arr = explode(":",$Message);
        if(count($arr)>0){
            return sprintf('<div class="alert alert-%s">%s</div>',strtolower($arr[0]),$arr[1]); 
        }

       else {
            return sprintf('<div class="alert alert-default">%s</div>',$Message); 
        }
    }
}

答案 1 :(得分:2)

来自manual entry of strpos() function

  

返回针存在于相对于haystack字符串开头的位置(与offset无关)。另请注意,字符串位置从0开始,而不是1。

     

如果未找到针,则返回FALSE。

表示if($Postion !== TRUE)始终为true,因为strpos()永远不会返回true

要使您的功能按预期工作,请将if语句更改为if($Postion === false)

答案 2 :(得分:2)

strpos的文档中,您可以看到函数NEVER将返回true。只需在if语句中将其更改为false,一切都会正常工作。

答案 3 :(得分:1)

strpos()函数将字符串的起始位置作为整数返回,如果字符串不存在则返回FALSE。因此,if else语句将永远不会触及else语句,因为$ Position永远不会等于TRUE。

交换if语句以检查FALSE if($Position === FALSE)然后您应该能够获得正确的行为。

答案 4 :(得分:1)

您可以使用大于0的瞬间TRUE

function OutputMessage($Message=''){
if($Message){
    $Postion = strpos($Message,":");
    if($Postion < 0){
        return sprintf('<div class="alert alert-default">%s</div>',$Message); 
    }else{
        $Message = explode(": ",$Message);
        return sprintf('<div class="alert alert-%s">%s</div>',strtolower($Message[0]),$Message[1]); 
    }
}else{
    return "";
}

}

答案 5 :(得分:1)

尝试用此实现,

function OutputMessage($Message=''){
    if(is_null($Message) || $Message === ""){ return ""; }

    if(strpos($Message,":") === false){
       $result = sprintf('<div class="alert alert-default">%s</div>',$Message); 
    }else{
        $Message = explode(": ",$Message);
        $result = sprintf('<div class="alert alert-%s">%s</div>',strtolower($Message[0]),$Message[1]); 
    }
    return $result;
}