Problem mit preg_replace

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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); 
    Last edited by AmicaNoctis; 04-11-2009, 13: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]

    Comment


    • #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.

      Comment

      Working...
      X