Funktion in einem regulären Ausdruck
Volker
- php
0 seth0 Volker0 Samuel Vogel0 Volker
Hallo zusammen,
ich möchte per PHP in einem Text $text alle E-Mails suchen und als HTML-Code linken, so weit:
$text = preg_replace ("!([_a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+(.[_a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+)*@([a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+.)+([a-zA-Z]{2,3}))!", "<a href="mailto:\1">\1</a>", $text);
Jetzt möchte ich zusätzlich die gefundene E-Mail einer Funktion convertEmail($email) übergeben, die alle @ und . in der E-Mail in [at] und [dot] verwandelt. Die Funktion als solche habe ich, aber wie rufe ich sie innerhalb des regulären Ausdrucks auf?
(Falsche) Verdeutlichung:
$text = preg_replace ("!([_a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+(.[_a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+)*@([a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+.)+([a-zA-Z]{2,3}))!", "<a href="mailto:***convertEmail(??)***">***convertEmail(??)***</a>", $text);
Die regulären Ausrücke verwirren mich zugegeben etwas; wie formuliere ich den Funktionsaufruf richtig?
Danke für Hilfe.
Gruß, Volker
gudn tach!
ich möchte per PHP in einem Text $text alle E-Mails suchen und als HTML-Code linken, so weit:
$text = preg_replace ("!([_a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+(.[_a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+)*@([a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+.)+([a-zA-Z]{2,3}))!", "<a href="mailto:\1">\1</a>", $text);
u.a. die domains .info und .museum bleiben unberuecksichtigt. und punkte koennen auch mehrere hintereinander auftreten. ach ja, das sz wird ebenfalls nicht gematcht.
kurz: perfekt laesst sich diese aufgabe kaum loesen.
Jetzt möchte ich zusätzlich die gefundene E-Mail einer Funktion convertEmail($email) übergeben, die alle @ und . in der E-Mail in [at] und [dot] verwandelt. Die Funktion als solche habe ich, aber wie rufe ich sie innerhalb des regulären Ausdrucks auf?
prost
seth
u.a. die domains .info und .museum bleiben unberuecksichtigt. und punkte koennen auch mehrere hintereinander auftreten. ach ja, das sz wird ebenfalls nicht gematcht.
Ooops, das stimmt. Danke für den Hinweis.
kurz: perfekt laesst sich diese aufgabe kaum loesen.
"Sogar das Vortrefflichste hängt von Umständen ab und hat nicht immer seinen Tag."
Hach, wieder was naheliegendes übersehen. Bedankt.
Gruß, Volker
Wie gesagt: Warum eine extra Funktion aufrufen??
Warum denn eine Funktion aufrufen?
$text = preg_replace ('#([a-zäöüéèàßA-ZÄÖÜÉÈÀ0-9-_.]+)\@([a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+)\.([a-zA-Z]{2,5})#','<a href="mailto:\\1[at]\\2[dot]\\3">\\1[at]\\2[dot]\\3</a>', $text);
$text = preg_replace ('#([a-zäöüéèàßA-ZÄÖÜÉÈÀ0-9-_.]+)\@([a-zäöüéèàA-ZÄÖÜÉÈÀ0-9-]+)\.([a-zA-Z]{2,5})#','<a href="mailto:\\1[at]\\2[dot]\\3">\\1[at]\\2[dot]\\3</a>', $text);
Aber wäre bei diesem Beispiel nicht das "Problem" / der Effekt, dass Punkte vor dem @ nicht durch [dot] ersetzt werden?
Gruß, Volker