was mach ich falsch !?

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

  • was mach ich falsch !?

    Ich krieg bei dem Code hier immer nur ein leeres Array ausgegeben
    Zwar scheint er die 2 Werte zu finden aber nicht in das Array einzufügen. Wieso !?

    Array
    (
    [0] =>
    [1] =>
    )
    1

    PHP-Code:
    <?
    $text = "blah blah blah {test} bjsdfhsdg xcvxbxcb {xy}";
    preg_match("{(.*?)}",$text,$found);
    $test = print_r($found);
    echo $test;
    ?>

  • #2
    1) print_r() gibt nur einen boolean Wert zurück, den brauchst du nicht auszuprinten.

    2) Ich nehme mal an, du willst die Werte in den geschweiften Klammern herausfischen ({ ... }). Dann fehlt deinem regulären Ausdruck aber ein Delimiter.

    =>
    PHP-Code:
    $text "blah blah blah {test} bjsdfhsdg xcvxbxcb {xy}";
    preg_match_all("/{(.*)}/"$text$found);
    print_r($found); 
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #3
      Wenn ich das nun so mache :
      preg_match_all("/{(.*)}/", $text, $found);

      Krieg ich das raus
      Array
      (
      [0] => Array
      (
      [0] => {test} bjsdfhsdg xcvxbxcb {xy}
      )

      [1] => Array
      (
      [0] => test} bjsdfhsdg xcvxbxcb {xy
      )

      )

      {{ }} scheinbar nimmt er die äußeren beiden Klammen für eine, ist es möglich dem Script das abzugewöhnen ?
      Ich möchte ja immer nur die einzelnen Stückchen {text} und {xy}
      und nicht {text........xy}.

      Kommentar


      • #4
        Original geschrieben von burzum
        {{ }} scheinbar nimmt er die äußeren beiden Klammen für eine, ist es möglich dem Script das abzugewöhnen ?
        ja, reguläre ausdrücke sind greedy, gierig - sie versuchen immer so viel zu erwischen, wie möglich.

        es gibt aber eine möglichkeit, ihnen das abzugewöhnen, das fragezeichen dient dazu in anderer verwendung glaube ich. es gibt hier unter den tutorials eines zu regex, schau dort nach, dort wird's erklärt ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Du hast zwei Möglichkeiten.
          1) den U Modifier: preg_match_all("/{(.*)}/U", $text, $found);

          2) das Suchpattern zu verändern: preg_match_all("/{([^}]*)}/", $text, $found);


          beides sollte funktionieren; ich würde aber die erste Lösung bevorzugen.
          [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
          [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
          [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

          © Harald Schmidt

          Kommentar

          Lädt...
          X