string splitten ab erster Zahl.

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

  • string splitten ab erster Zahl.

    Hallo ich habe folgenden CodeSchnipsel:

    PHP-Code:
    <?
    $string = "<20"; 
    preg_match('/[< > <= >=]+|[0-9]+/', $string, $result);  
    echo "[0]".$result[0];
    ?>

    er gibt mir das "<" Zeichen aus oder halt ein größer Zeichen oder größer gleich oder kleiner gleich.

    Alerdings brauche ich auch noch den Rest vom String. Sozusagen in $result[1].

    Mit explode geht es nicht da ich ja kein eindeutiges Zeichen ahbe nach dem ich in dem String suchen kann. Welche möglichkeiten ahbe ich noch?

    Danke und Lieben Gruß
    Jache84

  • #2
    Hi,

    preg_split

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      ja aber bei der Funktion kann ich ja nicht nach "<", ">", "<=" oder ">=" suchen lassen, sondern der trennt mir entweder bei einem Leerzeichen oder einfach nach jeden Buchstabe. Oder hbae ich die Funktion mal wieder komplett falsch verstanden

      Kommentar


      • #4
        Original geschrieben von Jache84
        Oder hbae ich die Funktion mal wieder komplett falsch verstanden
        Ja hast du. Die funktion trennt abhängig von einem trennzeichen wie explode,
        nur dass in diesem fall der trenner erst ermittelt wird in dem das muster
        angewendet wird. Da regex alternativen unterstützt hast du also die möglichkeit
        mit disjunkten trennern zu arbeiten.

        greets
        (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

        Kommentar


        • #5
          hmmmm.

          also wenn ich das hin schreibe:

          PHP-Code:
          <?

          $str = '<10';
          $zeichen = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
          echo $zeichen[0]."<br>";
          echo $zeichen[1];

          ?>
          dann bekomme ich nur das ausgegeben:

          <
          1

          sprich eigentlich nichts was ich will, der trennt mir einfach alle Zeichen des Strings und splittet sie auf.

          Vor allem ich ahbe in meinem String zwischen dem Operator und der Zahl kein Leerzeichen.

          Irgendwie verstehe ich das nicht so.

          Kommentar


          • #6
            dann bekomme ich nur das ausgegeben:
            <
            1
            PHP-Code:
            print_r(preg_split('/(<|>)=?/','<=10<20>=30',-1,PREG_SPLIT_NO_EMPTY));
            //ausgabe
            /*
            Array
            (
                [0] => 10
                [1] => 20
                [2] => 30
            )
            */ 
            sprich eigentlich nichts was ich will, der trennt mir einfach alle Zeichen des Strings und splittet sie auf.
            Dann drück dich so aus dass man auch versteht was du willst

            edit
            Wie kommt das leerzeichen in das muster ? Im code ist es
            jedenfalls nicht.
            (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

            Kommentar


            • #7
              Was fü ein Leerzeichen meinst du?

              Also dann nochmal. Ich brauche das ganze für eine Formularabfrage. Der User gibt ein <10 oder >10 oder <=10 oder >=10. Somit möchte ich aus der Eingabe vom USer auslesen wie ich meine WHERE Klausel im SQL Statement bauen muss. Und deswgen brauche ich irgendeine PHP Funktion die mir ein Strin in zwei Strings trennt und zwar genau da wo die erste Zahl drin vor kommt.

              Sprich User gibt ein <10

              ich will dann haben $eingabe[0] = "<"
              und $eingabe[1] = "10"

              und wenn USer eingibt: < 10 (mit Leerzeichen) dann soll halt rauskommen:
              $eingabe[0] = "< "
              $eingabe[1] = "10"

              Hoffe es ist jetzt verständlich

              Liebe Grüße
              Jochen

              Kommentar


              • #8
                Hi,

                äh ja. Also ich würde ja dem user nicht erlauben in meinen sql-strings
                rum zu schreiben. Aber ok.
                Code:
                /(<|>|<=|>=)(?: *)(\d+)/
                Das ganze mit preg match und du erhältst als match[1] das ordnungszeichen
                und als match[2] den wert.

                greets
                (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                Kommentar


                • #9
                  Spitze habe es.

                  DANKE!

                  Wie würdest du er machen, wenn der USer nicht im SQL Statement rum fuschen soll?

                  Für die die es interessiert hier der Code:

                  PHP-Code:
                  <?
                  $string = "<=20"; 
                  preg_match('/(<|>|<=|>=)(?: *)(\d+)/', $string, $result);  
                  echo "[0]".$result[0]."<br>";
                  echo "[1]".$result[1]."<br>";
                  echo "[2]".$result[2]."<br>";
                  ?>
                  Liebe Grüße
                  Jache84

                  Kommentar

                  Lädt...
                  X