RegEx-perte gesucht!!!

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

  • RegEx-perte gesucht!!!

    Eben ist mit aufgefallen, dass alles was ich den ganzen Tag versucht habe totaler Quatsch war.

    Ich habe z.B. folgende RegEx:
    PHP-Code:
    $content preg_replace("#<([^(a|b|i|br|img|ul|li|table|tr|td)]) .+>(.*)</\\1>#isUS""\\2"$content); 
    Es sollen alle Tags gefunden werden außer a, b, i, br, img ... usw.
    Da ich die Auswahl negativieren muß habe ich alle relevanten Tags in eine Zeichenklasse gepackt, da man diese nagativieren kann.
    Nun ist mir aber aufgefallen, dass es ja Zeichen-KLASSEN sind.
    [img] wird also nicht "i" gefolgt von "m" gefolgt von "g" interpretiert, sonder im Sting an betroffener Stelle sind nur die Zeichen "i", "m", oder "g" erlaubt, die Reihenfolge pielz keine Rolle. So z.B. auch [a-z].

    So, nun endlich meine Frage: Wie kann ich denn eine ganze RegEx negativieren ohne Zichenklassen zu benutzen?
    Also, erkenne mir alles AUßER "br" oder "img" oder "ul"... usw.

    Und weils so schön ist noch eine Spur schwieriger:

    Erkenne alle <table .*> Tags, außer <table name="mytable" .*>
    Es soll einerseits positiv "<table" erkannt werden und alles ".*" was es sonst noch an Attributen gibt, aber nur wenn nicht name="mytable" darin vorkommt.
    Also eine Negation , die ansich ja nicht in einer Zeichenklasse stehen kann.

    Wie geht das?

    Dank & Grüße,
    Andi

  • #2
    Meines Wissens nach kann man keine Zeichenketten negieren,
    immer nur einzelne Buchstaben.

    PS: das Problem hatte ich auch schon mal
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Hatte ich schon fast befürchtet.

      Wie stets mit
      $content = !preg_replace(...)

      das probiere ich gleich mal. In IF-Abfragen funktioniert das zumindest:
      if (!eregi(...))

      Mal schauen...

      Kommentar

      Lädt...
      X