Problem mit preg_replace

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

  • Problem mit preg_replace

    Hallo,

    ich versuche gerade bei meiner Anwendung Links durch Javascript zu ersetzen, das versuche ich mit preg_replace zu berwerkstelligen, leider ist mir das ganze mit den RegExp irgendwie zu hoch und alles was ich bisher hinbekommen habe ist folgendes:

    Ich versuche Links der folgenden Form
    HTML-Code:
    href="http://www.irgenswas.de/bla/Homepage&bla=yasd&bla2=ade..."
    zu solchen Links umzuwandeln:
    HTML-Code:
    href="#" onclick="gotoPage(\"Homepage\")"
    Mein bisheriger Versuch sieht wie folgt aus:
    PHP-Code:
    preg_replace('~href="http://www.irgenswas.de/bla/([^"]+)"~''href="#" onclick="gotoPage($1)',$tpl_output); 
    Soweit ich das durchschaut habe sollte sich zumindest irgendwas (bei onclick sollte alles nach /bla/ stehen) ändern, das tuts aber nicht und ich bin ratlos...

  • #2
    Hallo,

    zuerst möchte ich dich darauf hinweisen, dass Benutzer mit deaktiviertem JavaScript auf der Seite dann gar nicht mehr navigieren können. Besser wäre es, das href-Attribut zu erhalten. Solange der onclick-Handler false zurückgibt, wird sowieso nicht zum Verweisziel gewechselt.

    Der Fehler liegt daran, dass du im Ersetzungsausdruck einen "ungequoteten" String an die Funktion übergibst, worauf dich die Fehlerkonsole des Browsers auch hätte hinweisen müssen.

    PHP-Code:
    preg_replace('~href="http://www.irgenswas.de/bla/([^"]+)"~''$0 onclick="gotoPage(\'$1\'); return false"',$tpl_output); 
    Zuletzt geändert von AmicaNoctis; 04.11.2009, 14:44.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Und dann könnte man auch überlegen, ob man die click-Handler nicht gleich erst per JavaScript setzt. Dabei hat man auch den Vorteil, dass ein DOM eh schon vorhanden ist, auf dem man diese Änderungen sehr bequem erledigen kann, und das ganze nicht auf Textbasis machen muss, was das ganze fehleranfälliger macht. (Klar, mit DOM könnte man auch serverseitig schon arbeiten - nur hat man ein solches dort nicht per Default, sondern müsste es erst mal erstellen lassen.)
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar

      Lädt...
      X