Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Wieder einmal regex

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101

    Wieder einmal regex

    Hallöle,

    ich hoffe, es gibt dafür überhaupt eine Lösung. Ich möchte mit preg_replace() bestimmte Schlüsselwörter durch andere ersetzen, aber nur, wenn sie nicht innerhalb von einem <form></form>-Tag stehen. Geht das überhaupt?

    Ich hab es schon mit Negation versucht, komme damit aber nicht weiter.

    PHP-Code:
    $pattern "!/\<form(.*)>(?.*)<\/form>/is"

    Damit scheine ich auf dem Holzweg zu sein, wie mir scheint. Ich danke für einen Tipp, der mich weiter bringt.

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101
    Ich habe nun doch eine Lösung gefunden, ich mach einfach einen Save des Forms, lass alles ersetzen und setze anschließend das form wieder zurück:

    PHP-Code:
        preg_match("/\<form(.*)form\>/is"$str$backsave);
        if(
    is_array($backsave) && count($backsave) > 0)
            
    $form_code $backsave[0];
        else
            
    $form_code "";


        
    /* Hier die Ersetzungen */

        
    if($form_code != "")
            
    $str preg_replace("/\<form(.*)form\>/is"$form_code$str); 
    Ich weiß, das ist nicht sehr elegant, dafür aber schnell gelöst. Wenn jemand dennoch etwas besseres weiß, ich bin für alles offen.

  3. #3
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Beatkiller
    preg_replace() bestimmte Schlüsselwörter durch andere ersetzen, aber nur, wenn sie nicht innerhalb von einem <form></form>-Tag stehen. Geht das überhaupt?

    Damit scheine ich auf dem Holzweg zu sein, wie mir scheint. Ich danke für einen Tipp, der mich weiter bringt.
    Geht schon, da mußt Du mit Rückreferenzierungen arbeiten.
    Ist aber eine ziemliche Fummelei, die ganzen Ausnahmen zu bedenken.
    Einfacher ist es alle Zeilen die nicht <form></form> enthalten zu
    extrahieren, und dann die Ersetzung vorzunehmen. Nachteil:
    Dein Script wird eventuell etwas langsamer.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.12.2004
    Beiträge
    217
    Hi,

    um mit regular expressions zu experimentieren und schnell zu testen gibt es ein Programm namens Regex Coach, zu finden auf:

    http://www.weitz.de/regex-coach/

    Gruß,
    nEox

  5. #5
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101
    Danke für die Tipps.

    @Romanday: Genauso hab ich es auch gemacht. Die Geschwindigkeit ist kaum spürbar langsamer.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •