Mail Links Anklickbar machen
Andavos
- php
0 Ole0 Stefan Bach
Hallo,
ich habe ein Gästebuch mit PHP geschrieben.
Dort werden die Texte in eine MySQL Datenbank gespeichert.
Wenn der User jetzt folgendes Schreibt.
Hallo,
mail mal bitte an abc@xyz.de
Dann ist die mailadresse ja kein Mail Link, aber wie bekomme ich einen.
ich weiß zwar das man mit str_replace etwas ersetzten kann, aber ich kann ja kein mailto: davor setzten.
Ich hab schon im PHPSelf nachgeguckt, aber noch nichts wirkliches gefunden, immer nur "ersetzt bestimmte Zeichen..."
Aber ich möchte ja nur ein Mailto: davor setzten.
Denn dann gehts, denn ich ersetze bestimmte Begriffe hiermit:
function replace_uri($str)
{
$pattern = '#(^|[^"=]{1})(http://|ftp://|mailto:)([^\s<>]+)([\s\n<>]|$)#sm';
return preg_replace($pattern,"\1<a href="\2\3">\3</a>\4",$str);
};
Also wenn der User mailto:abc@abc.de eingibt geht das, aber wenn er nur abc@abc.de eingibt geht das nicht.
MFG
Andavos
hi
wie wärs wenn du nach einer zeichenkombination suchst. ein e-mailadresse baut sich ja im prinzip so auf
string@string.tld
also, erstmal nach dem @ suchen, dann schauen ob hinter dem zweiten string ein punkt existiert und eine tld.
in den meisten fällen dürfte die e-mailadresse zwischen leerzeichen stehen. eine liste mit tlds gibt es auch.
also nimmst du dann alles zwischen den beiden leerzeichen und setzt es als e-mailadresse um.
ist zwar recht umständlich und auch nicht der sicherste weg, aber es könnte funktionieren...zumindest teilweise.
so long
ole
(8-)>
Hallo,
jo, so weit war ich auch schon, aber welche Befehle soll ich dafür benutzen??
mit str_replace geht das meines Wissens nicht
MFG
Andavos
hi,
jo, so weit war ich auch schon, aber welche Befehle soll ich dafür benutzen??
beschäftige dich mit preg_replace() und regulären ausdrücken.
gruss,
wahsaga
Hallo,
Hallo,
mail mal bitte an abc@xyz.deDann ist die mailadresse ja kein Mail Link, aber wie bekomme ich einen.
Schau dir bitte mal http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/index.html an, dort wird beschrieben, wei man mit einer Regex Mailadressen verifizeiren kann. Du setzt vor und hinter diese Regex noch eine Suche nach einer Wortgrenze oder Anfang/Ende des Strings und schon kannst du sie zum finden/ersetzen verwenden.
Beachten könntest du noch die Situation, dass eine Mailadresse vielleicht in <...>, (...) oder "..." eingeschlossen sein könnte, oder nach der TLD noch ein abschließender Punkt steht. Dann sollte das ganze recht zuverlässig funktionieren.
Viele Grüße,
Stefan