Seite 1 von 1
Email-Adresse mit Betreff in Link umwandeln
Verfasst: 04.11.2005 15:10
von horscht
Hallo,
ich möchte eine Email-Adresse mit Betreff in einen Link umwandeln lassen.
standardmäßig wird z.B.
dasisteintest@xyz.com umgewandelt
nicht aber
dasisteintest@xyz.com?subject=bla bla
ich habe es mit dem Mod
"erweiterter BBcode für email" versucht
aber das funktioniert leider auch nicht
ich hoffe deshalb auf eure Hilfe

Verfasst: 04.11.2005 18:24
von Christian_W
Man müsste in der /includes/bbcode.php die
Regulären Ausdrücke anpassen, damit sie auch das Fragezeichen und die folgenden Buchstaben erfassen.
Betroffen sind die folgenden beiden Zeilen:
Code: Alles auswählen
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
Bei der Zweiten Zeile muss vermutlich noch eine Templatedatei angepasst werden.
Code: Alles auswählen
$patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
Gruß Christian
PS: Nein, was genau geändert werden muss, weiß ich nicht.
Verfasst: 05.11.2005 15:11
von horscht
@Christian_W
dank dir weiß ich zumindest schon mal wo die Codeänderung stattfinden muss.

leider weiß ich nicht, wie ich den Code anpassen muss, damit mein Anliegen umgesetzt wird.
vielleicht findet sich ja noch ein Codingfreak, der sich mit der Materie besser auskennt
Verfasst: 05.11.2005 16:39
von Christian_W
Ich hab mal ein wenig experimentiert. Email-Adressen die dierekt im Text stehen werden so umgewandelt. Der Betreff allerdings nur bis zum ersten Leerzeichen. Sonst kann nicht ermittelt werden wann der Link endet und der Text weitergeht.
Sinnvoller wäre daher wohl das [email]-Tag anzupassen.
Hier also mal die Änderung:
Code: Alles auswählen
----- öffne -----
/includes/bbcode.php
----- finde -----
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
----- ersetze mit -----
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)(\?)*([\w=]*)#i", "\\1<a href=\"mailto:\\2@\\3\\5\\6\">\\2@\\3\\5\\6</a>", $ret);
Hier noch meine Notizen (die außer mir wohl kaum einer versteht)
Code: Alles auswählen
01.
===
#(^|[\n ])
# Begrenzung am Anfang
^ Anfang doch nicht=> (hier wohl zum negieren verwendet)
| ODER? start of alternative branch
[\n ] Gruppe von verschiedenen möglichen Zeichen
\n Zeilenumbruch
02.
===
([a-z0-9&\-_.]+?)
[a-z0-9&\-_.]Kleinbuchstaben, Zahlen; und(&), Bindestrich, Unterstrich, Punkt
+ eins oder mehr der vorrangehenden Zeichen (innerhalb [] )
? unklar
02a.
====
@
@ Das Zeichen @
03.
===
([\w\-]+\.([\w\-\.]+\.)*[\w]+)
\w irgendein Buchstabe der in einem Wort vorkommen kann
\- der Bidestrich
+ eins oder mehr der vorrangehenden Zeichen (innerhalb [] )
\. der Punkt
[\w\-\.] Buchstaben, Bindestrich, Punkt
+ eins oder mehr der vorrangehenden Zeichen (innerhalb [] )
\. der Punkt
* keins oder mehr der vorrangehenden Zeichen innerhalb ()
[\w] irgendein Buchstabe
+ eins oder mehr der vorrangehenden Zeichen (innerhalb [] )
03.a
====
#i
# Begrenzung am Ende
i Groß und Kleinbuchstaben
Gruß Christian
Verfasst: 05.11.2005 17:08
von Christian_W
Hier noch das Ganze mit dem [email]-Tag:
Code: Alles auswählen
----- öffne -----
/includes/bbcode.php
----- finde -----
$patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
----- ersetze mit -----
$patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+(\?)*([\w= \-]*))\[/email\]#si";
Gruß Christian
Verfasst: 05.11.2005 20:52
von horscht
super, danke dir - werde ich morgen mal austesten

Verfasst: 09.11.2005 00:26
von horscht
so nun habe ich mal Zeit zum Testen...
ich habe den Mod
"erweiterter BBcode für email" installiert, da sieht die Struktur in der
/includes/bbcode.php so aus:
Code: Alles auswählen
// [email]user@domain.tld[/email] code..
$patterns[] = "#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
$replacements[] = $bbcode_tpl['email1'];
// [email=user@domain.tld]username[/email] code..
$patterns[] = "#\[email=([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\](.*?)\[/email\]#si";
$replacements[] = $bbcode_tpl['email2'];
wie muss ich deinen Code verändern, damit es funktioniert?
Verfasst: 09.11.2005 09:55
von Christian_W
So sollte es gehen:
Code: Alles auswählen
----- öffne -----
/includes/bbcode.php
----- finde -----
$patterns[] = "#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
----- ersetze mit -----
$patterns[] = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+(\?)*([\w= \-]*))\[/email\]#si";
----- finde -----
$patterns[] = "#\[email=([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\](.*?)\[/email\]#si";
----- ersetze mit -----
$patterns[] = "#\[email=([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+(\?)*([\w= \-]*))\](.*?)\[/email\]#si";
Gruß Christian