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