AllesMeins: Reg Ex will nicht so wie ich will

Hiho,

ich versuche gerade per Hand eine Session-ID in die Links auf einer Seite einzufummeln. Nun muss diese ID ja an das Ende des Links aber vor evtl. vorhanden Sprungziele. Also auf jedne Fall vor das #. Und das versuche ich gerade verzweifelt zu erreichen. So sieht mein derzeitiger Testaufbau aus:

preg_replace("/<a href="([^#"]*)(#)?(.*)"(.*)>/iUs", "<a href="\3">",$daten);

Aber irgendwie landet in \3 immer noch die komplette Adresse (\1 und \2 sind leer) inklusive #. Hat irgendwer ne Erklärung wieso? Ich gehe mal davon aus das die Dinger einzeln durchgezählt werden, so müsste doch in \3 nur der Inhalt der ersten Klammer sein und da ist # doch verboten. In \4 landet dann der inhalt der letzten Klammer - also alles nach den Anführungszeichen.

Kann mir da irgendwer aushelfen?

Grüße

Marc

  1. hi,

    ich versuche gerade per Hand eine Session-ID in die Links auf einer Seite einzufummeln.

    darf man fragen, warum per hand - und nicht mit dem standard-mechanismus, den PHP mitbringt?

    Aber irgendwie landet in \3 immer noch die komplette Adresse (\1 und \2 sind leer) inklusive #. Hat irgendwer ne Erklärung wieso? Ich gehe mal davon aus das die Dinger einzeln durchgezählt werden, so müsste doch in \3 nur der Inhalt der ersten Klammer sein und da ist # doch verboten. In \4 landet dann der inhalt der letzten Klammer - also alles nach den Anführungszeichen.

    wenn du dir erst mal klarheit verschaffen willst, welche treffer dein suchausdruck zurückliefert, würde ich dir preg_match_all() empfehlen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }