| Funktion in regulären Ausdrücken |
hagbard
Posting-Schinder
Beiträge: 539
|
Ich ersetze etwas via preg_replace.
Ein Text wird durch folgendes Ersetzt:
1: | '<a href="http://$1" target="geo2">$1</a>', |
Allerdings will ich, dass beim ersten mal $1 noch durch die Funktion url_ausgabe() läuft. Wie mache ich das?
---
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)
|
|  Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241
|
1:
2:
3: |
preg_replace("/foo(.+)foo/e", 'yourfunction("\\1")', $str);
|
edit: ohne /e geht natürlich nichts...
Diese Nachricht wurde geändert von: einstein |
|  Profil
Editieren
Zitieren
|
hagbard
Posting-Schinder
Beiträge: 539
|
Funktioniert bei mir leider nicht.
---
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)
|
|  Profil
Editieren
Zitieren
|
chip
Quasselstrippe
Beiträge: 391
|
Versuch's mal so:
1: | preg_replace("/foo(.+)foo/e", 'yourfunction("\\1")', $str); |
Wichtig ist der PCRE-Modifier "e" am Ende, denn nur der erlaubt die Weiterverarbeitung in einer Funktion!
---

|
|  Profil
Website
Editieren
Zitieren
|
hagbard
Posting-Schinder
Beiträge: 539
|
Ich bekomm es einfach nicht hin.
Mein Code, wie er noch funktionierte
1:
2:
3: |
preg_replace("#([a-z0-9_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)#is",'<a href="schreiben.php?mail=$1">$1</a>',$str);
|
Dann wollte ich nix anderes machen als die variable $1 durch die funktion mail_zerlegen() zu jagen.
Ich bekomme es nur leider nicht zum laufen.
---
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)
|
|  Profil
Editieren
Zitieren
|
chip
Quasselstrippe
Beiträge: 391
|
Bei preg_replace werden die gefundenen Unter-Suchmuster aber nicht mit $1, $2, ... angesprochen, sondern mit \\1, \\2, usw.
Und vergiss den PCRE-Modifier nicht. Du hast ja schon i und s verwendet. Jetzt da noch e anhängen und beim "Ersetzen-Muster" die Funktion einsetzen.
---

|
|  Profil
Website
Editieren
Zitieren
|
chip
Quasselstrippe
Beiträge: 391
|
Übrigens muss die Funktion auch noch richtig gestaltet sein (z.B. return-Anweisung nicht vergessen). Poste die Funktion einfach mal
---

|
|  Profil
Website
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795
|
chip schrieb am 29.02.2004 15:22
Bei preg_replace werden die gefundenen Unter-Suchmuster aber nicht mit $1, $2, ... angesprochen, sondern mit \\1, \\2, usw. |
Das ist Käse. $n geht genau so gut und läuft z.B. auch hier im Forum.
Also bisher fehlt bei dir der Modifier e. Folgendes sollte Funktionieren:
1: | preg_replace("#([a-z0-9_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)#ise", url_ausgabe("$1")."hier der andere mist zum ersetzen $1", $str); |
---
Take a look here!
Lichtblick - Einblick - Ausblick
|
|  Profil
E-Mail
Website
Editieren
Zitieren
|
hagbard
Posting-Schinder
Beiträge: 539
|
Jetzt läuft es. Ich habe es einfach nicht hinbekommen, dass vor und nach der Funktion noch Text angezeigt wird.
Danke!
---
"Wer mit künstlicher Intelligenz arbeitet, muß auch mit natürlicher Dummheit rechnen." (Klaus Kornwachs)
|
|  Profil
Editieren
Zitieren
|
chip
Quasselstrippe
Beiträge: 391
|
languitar schrieb am 29.02.2004 16:17
chip schrieb am 29.02.2004 15:22
Bei preg_replace werden die gefundenen Unter-Suchmuster aber nicht mit $1, $2, ... angesprochen, sondern mit \\1, \\2, usw. |
Das ist Käse. $n geht genau so gut und läuft z.B. auch hier im Forum.
Also bisher fehlt bei dir der Modifier e. Folgendes sollte Funktionieren:
1: | preg_replace("#([a-z0-9_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)#ise", url_ausgabe("$1")."hier der andere mist zum ersetzen $1", $str); |
|
OK, hast ja recht. Ich hab mir das ganze nochmals in der PHP-Manual angeschaut. Ich wusste bloß vorher nicht, dass man die "Backreferences" auch wie Variablen ansprechen kann.
Sorry hagbard, sorry languitar
---

Diese Nachricht wurde geändert von: chip |
|  Profil
Website
Editieren
Zitieren
|