2017-01-04 3 views
0

I benutzerdefinierte Funktion erstellt OutputMessage von wo ich Fehlermeldung wie diese Error: image upload failed! mit seinen ClassStyle bin Einfügen und dann String und Split-Klasse, ich bin explodiert von ihm in zu div class hinzufügen, aber meine Funktion nicht funktioniert fein.Wenn die Bedingung funktioniert nicht mit strpos

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 Prüfung nicht, weil ich Nachricht vorbei bin mit seiner Klasse, aber es ist die Rückkehr immer noch Standardklasse

+0

Welche Klasse soll das heißen? –

+0

Klasse Mean Stylesheet-Klasse wie Gefahr, Erfolg Ich übergebe String wie diese 'Danger: image upload failed!' –

+0

also zuerst ist es find string position ':' wenn true dann explode string und return message –

Antwort

2

Vom manual entry of strpos() function:

Gibt die Position, wo die Nadel relativ existiert zum Anfang der Heuhaufenschnur (unabhängig vom Offset). Beachten Sie auch, dass die Zeichenfolgenpositionen bei 0 und nicht bei 1 beginnen.

Gibt FALSE zurück, wenn die Nadel nicht gefunden wurde.

was bedeutet, dass if($Postion !== TRUE) immer true sein wird, wie strpos() nie true zurückgibt.

Damit Ihre Funktion wie erwartet funktioniert, ändern Sie Ihre if-Anweisung in if($Postion === false).

2

Aus der Dokumentation von strpos können Sie sehen, dass die Funktion NEVER True zurückgibt. Ändern Sie es einfach in der if-Anweisung in false und alles würde gut funktionieren.

3

Warum du so nicht erreichen können ....

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

Die strpos() gibt die Startposition des Strings als Integer oder FALSCH, wenn die Zeichenfolge nicht existiert. Ihre if else-Anweisung wird daher niemals die else-Anweisung treffen, da $ Position niemals gleich TRUE ist.

Tauschen Sie die If-Anweisung, um nach FALSE if($Position === FALSE) zu suchen, dann sollten Sie in der Lage sein, das richtige Verhalten zu erhalten.

1

können Sie verwenden, größer als 0 Instant 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 ""; 
} 

}

1

Versuchen mit, dies zu erreichen,

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; 
} 
Verwandte Themen