我创建了自定义函数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
检查无法正常工作,因为我正在将消息传递给它,但它仍在返回默认类
答案 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;
}