maximilian_1973: Zahlen zwischen String ausgeben?

Hallo!

Ich suche einen PHP-Code der folgendes macht:
Es wird folgender Text in ein Textfeld eingegeben:
bla 1234 blubb 546658 test 732623
Jetzt soll in folgenden Variablen gespeichert werden:
$bla = 1234
$blubb = 546658
$test 732623

Der Text der eingegeben wird ist immer gleich (die Zahlen ändern sich natürlich...), außer den Fall, das nichts eingegeben wurde:
bla 1234 test 732623
Jetzt soll aber folgendes zugeordnet werden
$bla = 1234
$blubb = 0
$test = 732623

Wie kann ich das realisieren?
mfg
maxi

  1. Hi Maximilian.

    Weisst Du, wie man "variable Variablen" anspricht? Wenn ja, dann eine kleine Explosion zu Beginn, und der Rest sollte kein Problem sein, oder?

    Variable Variablen sind aber selten sinnvoll, und wenn Du sagst, dass immer derselbe Text eingegeben wird, dann waere es eventuell sinnvoller, ihn nicht einzugeben, sondern nur die Werte? Was hast Du denn vor?

    Viele Gruesse,
    der Bademeister

    1. Danke erstmal für die schnelle Antwort ;)

      Ich habe vor eine Datenbank zu programmieren. Der Text wird aus einem anderen Dokument rauskopiert und in das Textfeld reinkopiert. Es wäre natürlich sehr unkomfortabel, wenn man jedes mal die Felder trennen müsste, besonders weil es sich um mehrere 100 Datensätze handelt ;)

      Nach deinen Links habe ich jetzt folgendes herausgefunden:

      // Beispiel 2
      $data = "foo:*:1023:1000::/home/foo:/bin/sh";
      list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
      echo $user; // foo
      echo $pass; // *

      das kommt meinem ja sehr nahe, wenn man es umformuliert:

      // Beispiel 2
      $data = "bla 1234 blubb 4637 test 8347";
      list($bla $blawert $blubb $blubbwert) = explode(" ", $data);
      echo $bla; // bla
      echo $blawert; // 1234

      Ich denke so müsste es funktionieren. Wenn nicht melde ich mich wieder
      Danke ;)

      1. Funktioniert nicht.

        $data = "bla 1234 blubb 4637 test 8347";
        list($bla $blawert $blubb $blubbwert) = explode(" ", $data);
        echo $bla; // bla
        echo $blawert; // 1234

        Wenn ich z.B. bla 1234 weglasse, ordner er bei bla den blubb wert zu. Wie kriege ich eine richtige Zuordnung hin?

        1. hallo,

          Wenn ich z.B. bla 1234 weglasse, ordner er bei bla den blubb wert zu. Wie kriege ich eine richtige Zuordnung hin?

          einen defaultwert dazwischen setzen, zum beispiel 0?

          --
          "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
        2. Funktioniert nicht.

          $data = "bla 1234 blubb 4637 test 8347";
          list($bla $blawert $blubb $blubbwert) = explode(" ", $data);
          echo $bla; // bla
          echo $blawert; // 1234

          Wenn ich z.B. bla 1234 weglasse, ordner er bei bla den blubb wert zu. Wie kriege ich eine richtige Zuordnung hin?

          In Deinem obigen Beispiel reagierst Du bei der Speicherung der Werte nicht darauf, welche Bezeichner davor stehen. Das musst Du aber natuerlich irgendwie, wenn nicht immer dieselben da stehen.

          Mein Vorschlag: Speichere die Daten nicht in separaten Variablen, die Du "variabel" ansprechen musst, sondern in einem assoziativen Array. Die Schluessel sind die Bezeichner, und die Werte sind die Werte (waerste jetzt nicht drauf gekommen, was ;-)).
          Wenn Du erstmal das Array hast, das explode zurueckgibt, dann kannst Du diese Array leicht produzieren, oder?
          Achtung uebrigens: list() zu benutzen wird dann problematisch, wenn Du nicht weisst, wie viele Werte das Array auf der rechten Seite hat.

          Viele Gruesse
          der Bademeister

  2. Hi!

    Es wird folgender Text in ein Textfeld eingegeben:
    bla 1234 blubb 546658 test 732623
    Jetzt soll in folgenden Variablen gespeichert werden:
    $bla = 1234
    $blubb = 546658
    $test 732623

    Das heißt, du willst beliebigen Text zu Variablennamen machen? Woher weißt du dann, welche Variablen angelegt wurden, damit du sie ansprechen kannst? Oder sind dir die Variablennamen im Prinzip egal, du hättest aber gern eine Zuordnung von dem Text und der dahinter stehenden Zahl? Oder sind die Texte gar bekannt und es können quasi wie beim Lotto in dem Textfeld x von y Varianten vorkommen?

    Jedenfalls tät ich hier einen Regulären Ausdruck anwenden, der Text und Zahlen separiert. Das Auswerten kommt später. Beides hängt davon ab, was du konkret willst.

    Variable Variablen kann ich nicht empfehlen. Das Mal-da-mal-nicht kannst du in einem Array besser handhaben. Für jeden Datensatz erzeugst du ein neues Array - fertig. Bei variablen Variablen musst du immer erst alle Variablen löschen oder auf einen definierten Wert setzen, bevor du einen neuen Datensatz einliest (im Schleifenbetrieb. Bei einem Datensatz pro Request spielt das natürlich keine Mandoline).

    Lo!