Ankündigung

Einklappen
Keine Ankündigung bisher.

Reguläre Ausdrücke

Einklappen

Neue Werbung 2019

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

  • Unbass
    hat ein Thema erstellt Reguläre Ausdrücke.

    Reguläre Ausdrücke

    Guten Abend,
    Hab ein Problem mit regulären ausfrücken es soll der text zwischen:
    <!-- BEGIN $place -->
    TEXT
    <!-- END $place -->
    ausgelesen werden in der datei steht z.b:

    <!-- BEGIN Test -->
    Hallo Welt!
    <!-- END Test -->

    <!-- BEGIN Test2 -->
    Hallo, Test Welt!
    <!-- END Test2 -->

    jetzt gebe ich an dass $place Test sein soll wie mache ich das ?

    Hab folgdendes:
    PHP-Code:
    preg_match("<!--[:space:]BEGIN[:space:]".$place."[:space:]-->.<!--[:space:]END[:space:]".$place."[:space:]-->"$str$matches); 
    Was ist der Fehler ?

    Vielen Dank
    Unbass

  • Unbass
    antwortet
    ok danke hat funktioniert ...

    Einen Kommentar schreiben:


  • Manko10
    antwortet
    Und da verließen sie ihn…
    Doc, was ist mit dir los? Du schwächelst!

    1. POSIX-Ausdrücke sind nur innerhalb von Zeichenklassen erlaubt
    2. Die Variable wird er innerhalb von Singlequotes wohl eher nicht parsen
    3. Die Modifier sind auch suboptimal

    PHP-Code:
    preg_match_all('/<!--[[:space:]]BEGIN[[:space:]]'.$place.'[[:space:]]-->(.*)<!--[[:space:]]END[[:space:]]'.$place.'[[:space:]]-->/Uis'$str$matches); 
    Die Zeichen <, > und ! kann man der Sauberkeit halber noch maskieren, funktioniert aber auch so.

    Einen Kommentar schreiben:


  • dr.e.
    antwortet
    [QUOTE]Kannst du mir villeicht posten wie genu du des meintest ?[/QUOTE
    Du brauchst noch einen Delimiter um deinen Ausdruck. So sollte es funktionieren:

    PHP-Code:
    preg_match_all('/<!--[:space:]BEGIN[:space:]".$place."[:space:]-->(.*)<!--[:space:]END[:space:]".$place."[:space:]-->/im',$str,$matches); 

    Einen Kommentar schreiben:


  • Unbass
    antwortet
    Ok danke habe es nun abgeändert nun habe ich noch ne frage welchen Modifiert brauche ich ?

    Habe nun:
    PHP-Code:
    preg_match_all("<!--[:space:]BEGIN[:space:]".$place."[:space:]-->(.*)<!--[:space:]END[:space:]".$place."[:space:]-->"$str$matches); 
    Mit der Klammer um (.*) kommt:
    Code:
    Warning:
    Code:
      preg_match_all() [function.preg-match-all]: Unknown modifier '.' in
    ohne:
    Code:
    Warning:  preg_match_all() [function.preg-match-all]: Unknown modifier '.' in
    Kannst du mir villeicht posten wie genu du des meintest ?

    Einen Kommentar schreiben:


  • dr.e.
    antwortet
    -> preg_match_all()
    -> der Text zwischen deinen Kommentaren muss mit ".*" adressiert werden
    -> da der Text Zeilenumbrüche beinhaltet brauchst du entsprechende Modifier

    Einen Kommentar schreiben:

Lädt...
X