Mailinglisten-Archive |
Hi,
On Mon, Oct 30, 2000 at 06:46:49AM +0100, Sebastian Bergmann wrote:
> da sich noch keiner erbarmt hat und mir von meinem Amazon.de Wunschzettel
> das RegEx Buch geschenkt hat, muss ich nochmal was fragen.
... sehr zu empfehlen.
> Es geht um folgendes: Ich möchte in einem String alle Strings der Form
>
> href="http://XXX"
Fuer die Erkennung der Links hast Du aber schon einen
passenden regulaeren Ausdruck, oder?
> durch folgendes ersetzen
>
> href="exit_bouncer.php?target=XXX",
>
> wobei das XXX natürlich aus dem aktuellen, ursprünglichen Match kommen
> soll.
Dann brauchst Du prinzipiell nur dafuer sorgen, dass die Komponenten
der URL, die Du wiederverwenden willst, als 'Sub-Expressions'
gematched werden. Die Unterausdruecke werden (anhand der oeffnenden
Klammer) von links nach rechts durchgezaehlt, und sind innerhalb
des'Replacement-Patterns' als '\1' '\2' erreichbar.
Zwei Anwendungen (die ziemlich dicht an Deiner Frage liegen)
finden sich in der FAQ.
http://www.koehntopp.de/php/faq-6.html#ss6.8
http://www.koehntopp.de/php/faq-6.html#ss6.9
Folgende Stolperfallen koennen Dir begegnen:
* die Backslashes muessen innerhalb von PHP-Strings
natuerlich maskiert werden, also z.B.:
$replPatter = "\\1blubb\\2";
* Du musst wissen, ob (ueberhaupt) und wann Du
'greedy' oder 'non-greedy' matchen willst.
* Was ist, wenn irgendwo zwischen "<a " und "</a"
ein Zeilenumbruch liegt.
-Andreas
--
: Anti-Spam Petition: http://www.politik-digital.de/spam/ :
: PGP-Key: http://www.tse-online.de/~ab/public-key :
: Key fingerprint: 12 13 EF BC 22 DD F4 B6 3C 25 C9 06 DC D3 45 9B :
php::bar PHP Wiki - Listenarchive