Verständnisfrage zu einer RegEx mit preg_replace

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

  • Verständnisfrage zu einer RegEx mit preg_replace

    Hallo,

    nur eine kurze Verständnisfrage (RegEx machen mir immer wieder Probleme, da durchzusteigen):
    PHP-Code:
     $test preg_replace"/[^a-z0-9 _=#$\*\(\)]/im"""$inhalt ); 
    Alles innerhalb der [ ] ist ERLAUBT (wird also nicht durch "" ersetzt), oder?

    Nach der 9 kommt ein Leerzeichen, gehört das somit auch zu den erlaubten Zeichen?

    Was macht /im ?

    Ich brauche das jetzt nicht für was Bestimmtes, beschäftige mich nur gerade mit Regular Expressions.

    Wie müßte ich das erweitern, wenn ich jetzt zusätzlich das & ersetzen will?
    So?
    PHP-Code:
     $test preg_replace"/[^a-z0-9 _=#$\*\(\)]/&/im"""$inhalt ); 
    Danke schonmal,
    Pust

  • #2
    Sofern ein ^ einem [ folgt, bedeutet das, dass alles innerhalb von [] negiert ist.
    [a-z] ... jeder Kleinbuchstabe, z. B. match bei: x
    [^a-z] ... kein Kleinbuchstabe, z. B. match bei: 1
    i bzw. m sind "Modifier" ("Optionsschalter"). Damit wird das Verhalten des regulären Ausdrucks näher bestimmt. Infos unter z. B. Google: "php regex modifier"

    Du sorgst bei deinem letzten Beispiel übrigens für etwas Chaos. preg_replace braucht sog. Delimiter. Der eigentliche reguläre Ausdruck befindet sich innerhalb dessen, der (die) Modifier befinden sich nach dem (zweiten und letzten) Delimiter.
    "/[a-z]/i"
    [a-z] ... der eigentliche reguläre Ausdruck
    / ... Delimiter
    i ... Modifier

    $test = preg_replace( "/[^a-z]/", "", $inhalt );
    [^a-z] sucht nach Allem außer den Kleinbuchstaben a bis z.
    In Verbindung mit dem preg_replace bedeutet dass, das alle Treffer durch "" ersetzt, d. h. gelöscht werden. Übrig bleiben also nur die angegebenen Kleinbuchstaben. Damit sollte eigentlich deine letzte Frage beantwortet sein. Wenn du das & ersetzen willst, brauchst du es nicht in die [] Liste aufnehmen.
    Zuletzt geändert von deedee; 23.06.2009, 14:20.

    Kommentar


    • #3
      Danke!

      Danke!
      Das war mal eine ziemlich verständliche Erklärung.
      Ob ich sie wirklich ganz kapiert habe, werde ich erst sehen, wenn ich das mal ernsthaft verwende. Zumindest glaube ich es.

      Danke nochmal und Grüße,
      Pust

      Kommentar

      Lädt...
      X