2016-05-22 8 views
2

Nicht sicher, wie ich das tun würde, aber wenn jemand mich auf den richtigen Weg zeigen könnte, das wird großartig, im Grunde habe ich eine einsame Textzeile in einer Variablen, die aussieht dies wie:PHP - Aufteilen von Zeichenfolgen in zwei Variablen

Lambo 1; Trabant 2; Car 3; 

dann will ich „Lambo“, um seine eigene Variable dann „1“ auf seine eigene Variable, und wiederholen sie für die anderen teilen. Wie würde ich gehen und das tun? Ich weiß explodieren über(), aber nicht sicher, wie ich es tun würde, um die Variable aufgeteilt zweimal usw.

Wie in den Kommentaren, wie dies angefordert meine gewünschte Ausgabe wäre: $ Item = „Lambo“ $ Menge = 1 Dann echo sie aus und gehen Sie zum Anfang der Schleife zum Beispiel und tun Sie das gleiche für den Trabant und Car

+0

Haben Sie überlegt, die Funktion [explode()] (http://php.net/manual/en/function.explode.php) von PHP zu verwenden? oder [preg_split()] (http://php.net/manual/en/function.preg-split.php)? –

+0

@MarkBaker Hey, ich habe es angeschaut, aber ich bin mir nicht sicher, wie ich es wie oben aufgeteilt würde, ich möchte zum Beispiel "Lambo" in einer Variablen zB $ Item dann die Nummer danach $ Quantity dann werde ich echo sie aus, und wiederholen Sie für die anderen beiden usw. – PaulB3434

+0

Fügen Sie ein Beispiel für Ihre gewünschte Ausgabe .. – dbf

Antwort

2
<?php 
$in = "Lambo 1; Trabant 2; Car 3;"; 
foreach (explode(";", $in) as $element) { 
     $element = trim($element); 
     if (strpos($element, " ") !== false) { 
       list($car, $number) = explode(" ", $element); 
       echo "car: $car, number: $number"; 
     } 
} 

Sie können mit explodieren Um die Eingabe für jede ; zu teilen, durchlaufen Sie die Ergebnisse und teilen Sie dann o auf Ver jeweils .

+0

Hey, jede Chance Sie könnten mir sagen, wie man eine MySQL Query in ein Format wie $ in bringt? $ result = mysqli_query ($ conn, $ sql_query); – PaulB3434

+0

@Paul Bitte stellen Sie Ihre Frage als neue Frage, nicht als Kommentar zu einer bestehenden Frage. –

0

Sie können preg_split und iterieren über das Array durch zweimaliges verschieben.

$output = preg_split("/ (;|vs) /", $input); 
0

Sie preg_match_all für immer jene Teile verwenden:

$line = "Lambo 1; Trabant 2; Car 3;"; 

preg_match_all("/[^ ;]+/", $line, $matches); 
$matches = $matches[0]; 

Mit, dass Beispieldaten, die $matches Array wird wie folgt aussehen:

Array ("Lambo", "1", "Trabant", "2", "Car", "3") 
0
$new_data="Lambo 1;Trabant 2;Car 3;" ; 
    $new_array=explode(";", $new_data); 
     foreach ($new_array as $key) { 
      # code... 
      $final_data=explode(" ", $key); 

      if(isset($final_data[0])){ echo "<pre>".$final_data[0]."</pre>";} 
      if(isset($final_data[1])){echo "<pre>".$final_data[1]."</pre>";} 
    } 
0

Damit werden jedes Wort und jede Nummer in einen neuen Schlüssel des Arrays eingefügt, wenn Sie sie separat aufrufen müssen.

preg_match_all ("/ (\ w +) (\ d +);", $ input_lines, $ output_array);

Click preg_match_all http://www.phpliveregex.com/p/fM8

0

Mit einem globalen regulären Ausdruck:

<?php 
$subject = 'Lambo 1; Trabant 2; Car 3;'; 
$pattern = '/((\w+)\s+(\d+);\s?)+/Uu'; 
preg_match_all($pattern, $subject, $tokens); 
var_dump($tokens); 

Die Ausgabe, die Sie erhalten, ist:

array(4) { 
    [0] => 
    array(3) { 
    [0] => 
    string(8) "Lambo 1;" 
    [1] => 
    string(10) "Trabant 2;" 
    [2] => 
    string(6) "Car 3;" 
    } 
    [1] => 
    array(3) { 
    [0] => 
    string(8) "Lambo 1;" 
    [1] => 
    string(10) "Trabant 2;" 
    [2] => 
    string(6) "Car 3;" 
    } 
    [2] => 
    array(3) { 
    [0] => 
    string(5) "Lambo" 
    [1] => 
    string(7) "Trabant" 
    [2] => 
    string(3) "Car" 
    } 
    [3] => 
    array(3) { 
    [0] => 
    string(1) "1" 
    [1] => 
    string(1) "2" 
    [2] => 
    string(1) "3" 
    } 
} 

die Elemente 2 und 3 halten genau die Token Dort du suchst nach.

Verwandte Themen