2016-08-17 5 views
0

Es wird eine Zeichenfolge mit einem einzelnen oder mehreren ohne Kommas sein.Erster Wert durch Komma getrennte Zeichenfolge

$str = "a, b"; 

Wie bekomme ich den ersten Wert vor dem Komma, wenn es Komma (s) enthält? Das habe ich getan.

if(preg_match('/[,]+/', $str, $f)) { 
    $firstVal = $f[0]; 
} 

HINWEIS: Ist /^[^,]+/ besser geeignet?

+9

'explode ('', $ str) [0]' wird der Trick – ineersa

+2

Bevor etwas regex Aufruf basiert, für eine einfache Lösung zuerst – RiggsFolly

+0

Warum benutzt niemand 'preg_match'? – Becky

Antwort

4

können Sie strtok verwenden:

$firstVal = strtok($str, ",") 
+0

Stark übersehen und obskure Funktion perfekt für diesen Anwendungsfall! – deceze

+0

Danke +10. Was, wenn ich sowieso überprüfen muss, ob der String Kommata vor $ $ firstVal = strtok ($ str, ",") 'hat? – Becky

+0

Sie können etwas überprüfen mit: 'if (strpos ($ str,", ")! == false)'. – trincot

2

Es gibt mehrere Möglichkeiten, dies zu erreichen.

  1. Mit substr() und strpos()

    echo substr($str,0,strrpos($str,',')); 
    
  2. Verwendung explode()

    $result = explode(',',$str); 
    echo $result[0]; 
    
  3. Verwenden von strstr()

    echo strstr($str, ',', true); 
    
+0

Danke. '$ result = explode (....' kommt innerhalb der if-Anweisung? – Becky

+0

Das hängt davon ab, was Sie erwarten. Sagen wir, wenn die Eingabe nur "abcd" ohne Kommas ist. Sollte es abcd ausgeben? Oder leer da da sind keine Kommas? –

+0

Wenn Komma (s) -> ersten Wert erhalten. Wenn kein Komma die vollständige Zeichenfolge verwenden. – Becky

-1

Explodieren, validieren und drucken.

$values = explode(',',$str); 
if(key_exists(0,$values) && trim($values[0])!=""){ 
    echo $values[0]; 
} 
+0

Können Sie bitte erklären 'key_exists (0, $ Werte) && $ values ​​[0]! =" "'? \ – Becky

+0

"," <- das ist da, um Fälle für Strings zu behandeln wie ich erwähnte –

+0

'explode' * always * liefert ein Array mit mindestens ein Element darin, selbst für leere Strings. Das einzige, was Sie interessiert, ist zu überprüfen, ob 'values ​​[0]' leer ist oder nicht, was bedeutet, dass '$ str' zu Beginn leer war. – deceze

Verwandte Themen