Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match (string aus einer externen variable)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg_match (string aus einer externen variable)

    hallo leute,

    ich hab folgendes problem.

    Und zwar will ich mittels einer externen Var eine foreach() funktion beeinflussen.

    hab also zwei files form.html (wo ich den string mittels post an eine php datei sende)

    form.html sieht so aus

    <form action=datei.php>
    <select name=name size=1>
    <option value=1> ...</option>
    ....
    </select>
    </form>

    und in der php datei

    habe ich folgendes script welches aus einem json string mir bestimmte daten liefern soll. (Das bestimmen der Daten, die geliefert werden sollen möchte ich mittels der über POST definieren.
    Es sieht etwa so aus:

    $string=$_POST['name'];
    foreach($json->namen as $name)
    {
    if (preg_match(/$string/i,$name->vorname))
    {echo "<pre>";
    echo $name->nachname;
    }}

    also das Problem denke ich folgendes
    da ich die variable für jeden schleifendurchlauf defenieren muss, muss ich sie irgendwie speichern. Weil meiner vermutung zur folge die variable $string nur einmal (beim ersten aufruf) definiert wird und danach verschwindet.
    Den ich hab sie einmal direkt in php definiert und es hat geklappt.

    Was meint ihr wie könnte ich dieses Problem umgehen?

  • #2
    Ganz ehrlich, ich versteh net ganz, was du jetzt genau wissen willst...

    Ich hoffe nur, dass dein form-tag das attribut method="post" besitzt, dein select korrekt die bezeichnung name="name" besitzt und du zumindest mal geschaut hast, was in $_POST['name'] ankommt...

    Zitat von kosha Beitrag anzeigen
    <form action=datei.php>
    <select name=name size=1>
    <option value=1> ...</option>
    ....
    </select>
    </form>

    Ansonsten suchst du nach einem String und nicht nach einem Ausdruck also würd ich hier [man]stripos[/man] nehmen und auf !== FALSE prüfen...
    Zitat von kosha Beitrag anzeigen
    $string=$_POST['name'];
    foreach($json->namen as $name)
    {
    if (preg_match(/$string/i,$name->vorname))
    {echo "<pre>";
    echo $name->nachname;
    }}

    Kommentar


    • #3
      Bitte benutze PHP Tags, macht das ganze bei weitem einfacher zu lesen.

      Nein, die Variable bleibt bestehen, wenn sie außerhalb der Schleife gesetzt wurde.

      Solange du keine komplexeren Pattern matchen willst, ist preg_* eignetlich überflüssig, da sollte auch ein normaler PHP-Vergleich reichen.

      PHP-Code:
      <form action="datei.php">
      <select name="name" size="1">
      <option value="1"> ...</option>
      ....
      </select>
      </form>
      <?php
      $string
      = (isset($_POST['name'])) ? $_POST['name'] : false;
      foreach(
      $json->namen as $name)
      {
      //if($string === false) break;
      if ($string == $name->vorname){ // oder strpos, je nachdem wie dus brauchst
         
      echo "<pre>";
         echo 
      $name->nachname;
      }}
      btw. dein gepostetes html ist invalide, könnte sein, das einige Browser, die Werte auch deshalb falsch übermitteln.

      Debuggen währe angebracht hinsichtlich deiner ankommenden Werte.

      edit:
      Auch, wenn du es für dein vorhaben nicht brauchen solltest, wenn ich dich korrekt Verstanden habe:
      Liste der wichtigsten Stringvergleichsfunktionen

      Kommentar


      • #4
        doch klar bei $string=$_POST[] kommt auch der gewünschte String an
        ich kann ihn auch ausgeben.

        Das problem was ich habe ist in der Schleife..
        Bleibt die variable bei jedem durchlauf erhalten?
        Oder wird sie beim zweiten durchlauf zurückgesetzt bzw. bleibt undefiniert weil ja von $_POST nix neues ankommt?

        Kommentar


        • #5
          Zitat von Suralc Beitrag anzeigen
          Bitte benutze PHP Tags, macht das ganze bei weitem einfacher zu lesen.

          Nein, die Variable bleibt bestehen, wenn sie außerhalb der Schleife gesetzt wurde.
          WEnn sie innerhalb, der Schleife gesetzt wurde, würde sie bei jedem Schleifendurchauf überschrieben werden, was ansich nicht weiter schlimm währe, da $_POST['name'] ja nicht verändert wurde.

          Ansonsten setzt doch einfach ein beherztes var_dump($var); in deine Schleife.

          btw. fortgeschrittenen Forum?

          Kommentar


          • #6
            preg_match hab ich anfangs angewendet da mich nur ein Teil der Zeichenfolge interessiert hat.. Also der String ist ne Kategorie und sieht so aus (1Kategory / 2Kategory / 3Kategory)

            Noch ne kurze frage bei der Übergabe von z.B.( 1Kategory / 2Kategory )
            muss ich da den \ vor dem / setzen oder?
            also z.B. $str="1Kat \/ 2Kat";

            Kommentar


            • #7
              Mal so nebenbei, sollta das hier ohne " " kein Fehler werfen ?
              Zitat von kosha Beitrag anzeigen
              preg_match(/$string/i,$name->vorname))

              Kommentar


              • #8
                Zitat von jspit Beitrag anzeigen
                Mal so nebenbei, sollta das hier ohne " " kein Fehler werfen ?
                ne ne das war kein original script wollte nur die funktion darstellen..
                hätte ich vllt besser vorher schreiben sollen...

                Das es nur ne Skizze ist..

                Kommentar


                • #9
                  Zitat von kosha Beitrag anzeigen
                  ne ne das war kein original script wollte nur die funktion darstellen..
                  hätte ich vllt besser vorher schreiben sollen...

                  Das es nur ne Skizze ist..
                  Dann poste den Originalcode in PHP-Tags, damit man dir besser helfen kann.

                  btw. wenn du gleichbleibende Trennzeichen hast, und nur nach einem bestimmten Wert suchen willst, kommst du wunderbar mit den Arrayfunktionen klar, ohne dich in anscheinend neues Regexgebiet zu wagen.

                  Kommentar


                  • #10
                    hast du recht...

                    Der schnellste Weg ist den man kennt...

                    Kommentar


                    • #11
                      @Surlac..
                      danke für den Tipp mir strpos, werds damit versuchen..

                      Kommentar


                      • #12
                        Zitat von kosha Beitrag anzeigen
                        Das problem was ich habe ist in der Schleife..
                        Bleibt die variable bei jedem durchlauf erhalten?
                        Oder wird sie beim zweiten durchlauf zurückgesetzt bzw. bleibt undefiniert weil ja von $_POST nix neues ankommt?
                        Einfach erklärt:
                        1. Du nimmst in die linke hand einen Stift mit Stärke 3
                        2. Solange das bild nicht ausgemalt ist
                        3. nimmst du deine Linke hand, und malst damit einen strich
                        PHP-Code:
                        $hand $_POST['stift']; // 1.
                        while( $bild 100 ) { // 2.
                        $bild += $hand// 3.

                        Solange das Bild nicht ausgemalt ist, bleibt der Stift in deiner Hand. Nur wenn du nach jedem Strich malen einen neuen Stift nimmst ( $hand = $stift2 ) ändert sich daran auch nichts

                        Kommentar


                        • #13
                          geiler Beitrag von mir, jetzt verstehe ich warum nikosh mich hier verwarnt hat. LOL

                          Kommentar

                          Lädt...
                          X