2017-12-19 1 views
-1

Ich habe eine Zeichenfolge namens $DiscountDescription, die manchmal mit Daten wie folgt bestückt werden können:Lesen Sie die Zeichenfolge bis zum ersten Komma, dann Wert der Zeichenfolge auswerten?

A43544675, A33540055, 

Oder wie folgt aus:

Grundsätzlich habe ich entweder in ihm einen Wert oder zwei Werte, getrennt durch ein Komma. Ich brauche wirklich nur den ersten Wert. Wenn es nur einen Wert gibt, hat er immer ein Komma und ein Leerzeichen dahinter, weshalb ich in meinem Code unten das Komma und Leerzeichen entferne, um die Zeichenkette auszuwerten.

Mein aktueller Code ist unten. Sie können sehen, wo ich nur dafür verantwortlich bin, wenn es einen Wert in der Zeichenfolge gibt, aber nicht beides. Also, was ich tun möchte, ist das Komma zu finden, und nehmen Sie alles auf der linken Seite des Kommas, und machen Sie das gleich .

$DiscountDescription = $_order->getDiscountDescription(); 

$DiscountDescriptionTrimmed = substr_replace($DiscountDescription ,"",-2); 

if ($DiscountDescriptionTrimmed != '') { 
    if (substr($DiscountDescriptionTrimmed,0,1) === "e" && strlen($DiscountDescriptionTrimmed) === 11){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 
    elseif (substr($DiscountDescriptionTrimmed,0,1) === "E" && strlen($DiscountDescriptionTrimmed) === 9){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 
    elseif (substr($DiscountDescriptionTrimmed,0,1) === "A" && strlen($DiscountDescriptionTrimmed) === 9){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 
    elseif (strlen($DiscountDescriptionTrimmed) === 17 && substr_count($DiscountDescriptionTrimmed,'-') === 2){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 
    elseif (strlen($DiscountDescriptionTrimmed) === 8 && ctype_digit($DiscountDescriptionTrimmed)){ 
     $_order->setDiscountDescription('Gift Cards ' . $DiscountDescription); 
    } 

} 
+1

Kannst du nicht verwenden [** explode **] (http://php.net/manual/en/function.explode.php)/[strstr] (http://php.net/ manual/de/function.strstr.php) oder so ähnlich? – FirstOne

+1

'list ($ firstValue) = explodieren (',', $ DiscountDescription);' –

+0

Ist es möglich, dass die Zeichenfolge mit einem Komma beginnt? '$ DiscountDescription = ', A33540055''? –

Antwort

2

Sie können strtok() verwenden, um dies zu erreichen:

$DiscountDescriptionTrimmed = strtok($DiscountDescription, ', '); 

Wenn Sie jemals den zweiten Wert benötigt, können Sie strtok() wieder rufen:

$SecondDiscountDescriptionTrimmed = strtok(', '); 
0

Was dies mit einfachen explode() und den Index 0 erhalten?

$DiscountDescription1 = 'A43544675, A33540055,'; 
    $DiscountDescription2 = 'A43544675,'; 
    echo explode(',',$DiscountDescription1)[0]; 
    echo "\n"; 
    echo explode(',',$DiscountDescription2)[0]; 

Demo: https://eval.in/922189

+0

Ja, du kannst. kein Problem damit. –

0

Die erste Zeile gibt die Länge des ersten Wertes und die zweite Linie extrahiert sie.

$length = strpos($DiscountDescription, ',') + 1; 
$DiscountDescriptionTrimmed = substr($DiscountDescription, 0, $length); 
Verwandte Themen