Felix Riesterer: (PHP) verstehe meine regexp nimmer...

Beitrag lesen

Hi seth,

$html_body = preg_replace('/((?i)href=)"?(?!(mailto:[\S^>^"]*)|(http:[\S^>^"]*))([\S^>^"]*)/', '\1"index.php?aktion=informationen&thema='.$ref_korrektur.'\2', $html_body);

  1. Warum scheitert meine regexp nicht an "mailto:" und "http:"?

wegen dem fragezeichen im "? davor, denke ich.

Nein, das Fragezeichen sagt nur, dass das " optional ist, also auch fehlen kann.

  1. Woher kommen denn die schließenden Anführungszeichen (sowohl bei den Bildquellen, als auch bei den Verweiszielen)?

aeh, du moechtest wissen, wie du du sie einfuegen kannst, oder?

Nein, im Ergebnisstring sind nach dem src-Attribut schließende Anführungszeichen enthalten, die in meinem Ersetzungsargument nicht enthalten sind, also auch nicht eingefügt werden sollen...
Aber ich ahne schon den Fehler: Ich habe die eventuellen schließenden Anführungszeichen nicht im Suchstring... also bleiben sie "übrig". Werde das testen.

zuerst s/href=([^"])/href="\1/g und dann

Verstehe ich (noch) nicht...

$html_body=preg_replace('/((?i)href=)"(?!(?:mailto:|http:))([\S^>^"]*)(?:")?/', '\1"index.php?aktion=informationen&thema='.$ref_korrektur.'\2"', $html_body);

Das werde ich mal ganz schnell ausprobieren. Melde dann, wenn es tut.

prost

Jedenfalls Danke für Deine Antwort!

Liebe Grüße aus Ellwangen,

Felix Riesterer.