Email-Adresse mit Betreff in Link umwandeln

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt um einen neuen Mod zu entwicklen, geht's in phpBB 2.0: Mods in Entwicklung weiter.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
horscht
Mitglied
Beiträge: 201
Registriert: 28.11.2004 11:13

Email-Adresse mit Betreff in Link umwandeln

Beitrag 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 ;)
LG horscht :D
Christian_W
Ehemaliges Teammitglied
Beiträge: 5703
Registriert: 26.02.2004 00:09

Beitrag 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.
---
Benutzeravatar
horscht
Mitglied
Beiträge: 201
Registriert: 28.11.2004 11:13

Beitrag 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
LG horscht :D
Christian_W
Ehemaliges Teammitglied
Beiträge: 5703
Registriert: 26.02.2004 00:09

Beitrag 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
---
Christian_W
Ehemaliges Teammitglied
Beiträge: 5703
Registriert: 26.02.2004 00:09

Beitrag 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
---
Benutzeravatar
horscht
Mitglied
Beiträge: 201
Registriert: 28.11.2004 11:13

Beitrag von horscht »

super, danke dir - werde ich morgen mal austesten :D
LG horscht :D
Benutzeravatar
horscht
Mitglied
Beiträge: 201
Registriert: 28.11.2004 11:13

Beitrag 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?
LG horscht :D
Christian_W
Ehemaliges Teammitglied
Beiträge: 5703
Registriert: 26.02.2004 00:09

Beitrag 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
---
Antworten

Zurück zu „phpBB 2.0: Mod Suche/Anfragen“