ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1411
1411
EMPFEHLEN
-
Hallo!
Ich bin dabei mir eine kleine Community zu schreiben.
Derzeit hänge ich leider am Problem preg_replace für URLs und E-Mail-Adressen.
Ich will das ganze auf zwei Wege machen.
1. BBCode (funktioniert bestens)
2. Automatisch erkennen
Welche preg_replaces brauche ich dafür?
Ich möchte das so möglich machen:
- http://domain.de wird zu Link
- www.domain.de wird zu Link
- info@domain.de wird zu Link
Zu beachten ist dabei nur, dass ich vorher (bevor ich die BBCode ersetze) dem Text Linebrakes einfüge.
Kann mir von euch jemand weiterhelfen?PHP-Code:$t = str_replace("\r\n","<br>\r\n",$t);
Ich habe mir zwar ein Buch über PHP4 gekauft, komme aber trotzdem nicht ganz mit der Patternsyntax klar.
Im original PHP-Handbuch ist gerade diese Seite englisch... *#@!Mit besten Grüßen,
Christian Daxberger
Mein Last.fm Profil
Nützliche Seiten:
SelfHTML · SQL in 21 Tagen (Markt & Technik)
-
*freu* wieder was für mich

Suchpattern für die autmatische URL-Erkennung:
$pattern_mit_und_ohne_http = "/[http:\/\/]?(([a-z0-9][a-z0-9_-]*)(\.[a-z0-9_-]+)+\/?(.*))/i";
$pattern_email = "/[a-z0-9_-.]@[a-z0-9][a-z0-9_-]*(\.[a-z0-9]+)+/i";
musst mal testen. Bin nicht mehr in der Lage noch meine Augen wachzuhalten
Dürfte aber funktionieren, wenn nicht, sag bescheid
Empirismus, die lieblingsmethode aller mir bekannter Programmierer :]
-
Ich hab jetzt ein kleines Problem (klein für dich):
Setze ich dein URL-Pattern ein, so wird eine E-Mail-Adresse z.B. zu: info@(link).
2. steht hinter der domain noch ein Text, so gehört der für das Pattern noch mit dazu.
Ich hätte das gerne noch etwas modifiziert.
Es sollen die Protokolle http:// und ftp:// erlaubt sein.
Das wäre doch dann am Anfang dann sowas in der Richtung: [http:\/\/|ftp:\/\/] kann ich jetzt irgendwie herausfinden, ob da jetzt http:// oder ftp:// davorsteht, oder geht das nur mit (.*?){3,4}:\/\/(.*?), sodass ich \1 = Protokol und \2 = Seite etc. habe?
edit:
Ich habs jetzt soweit umschreiben können:
Das funktioniert jetzt so, dass ich den Text davor und dahinter auch noch als normalen Text habe.PHP-Code:$t = preg_replace("(\\s)(http:\\/\\/|ftp:\\/\\/|www\\.)(([a-z0-9][a-z0-9]*)([\\.a-z0-9_-]+)+\\/?(.*))#ie",
"\\\\1<a href=\\"\\\\2\\\\4\\\\5\\" target=\\"_blank\\">\\\\2\\4\\\\5</a>\\\\6",$t);
Nur ein Problem besteht jetzt noch.
ist die Domain nur mit www. geschrieben, so muss eigentlich im Link am Anfang ein http:// stehen. Wie bekomme ich das jetzt hin? geht das direkt im Pattern oder muss ich dafür das Patter mit dem Modifier e machen und den Link dann von einer Funktion erstellen lassen, die bei einem www. http://www. daraus macht?
Im Klartext:
Dieser Code müsste eigentlich den gewünschten Erfolg bringen. Geht es auch einfacher?PHP-Code:$t = preg_replace("(\\s)(http:\\/\\/|ftp:\\/\\/|www\\.)(([a-z0-9][a-z0-9]*)([\\.a-z0-9_-]+)+\\/?(.*))#ie",
"bbc_link('\\1','\\2','\\4','\\5','\\6');",$t);
function bbc_link($a,$b,$c,$d,$e) {
$c = $a;
$b = ($b == "www.") ? "http://www." : $b;
$c .= "<a href=\"".$b.$c.$d."\" target=\"_blank\">".$b.$c.$d."</a>".$e;
return $c;
}
Geändert von Daxi (08.09.03 um 23:50 Uhr)
Mit besten Grüßen,
Christian Daxberger
Mein Last.fm Profil
Nützliche Seiten:
SelfHTML · SQL in 21 Tagen (Markt & Technik)
-
Ich habs jetzt geschafft.
Das funktioniert jetzt.PHP-Code:$t = preg_replace("#(http:\\/\\/|ftp:\\/\\/|www\\.)(([a-z0-9][a-z0-9]*)([\\.a-z0-9_-]+)+\\/?(.*))#ie",
"'<a href=\\"'.(('\\\\1' == 'www.') ? 'http://' : '').'\\\\1\\\\3\\\\4\\" target=\\"_blank\\">\\\\1\\\\3\\\\4</a>\\\\6'",$t);
Danke für deine Hilfe.
Jetzt schau ich mal zwecks E-Mail-Adressen...
edit:
Ich habe das Pattern nochmal editiert.
Es findet jetzt einwandfrei die URLs und E-Mail-Adressen.
Kann ich irgendwie definieren, dass vor der Adresse nicht ], =, " sein dürfen und dahinter kein [, ], " sein darf?
Ich will also diese Zeichen ausschließen.
Wie geht sowas?Geändert von Daxi (09.09.03 um 01:26 Uhr)
Mit besten Grüßen,
Christian Daxberger
Mein Last.fm Profil
Nützliche Seiten:
SelfHTML · SQL in 21 Tagen (Markt & Technik)
-
diese Zeichen schließen sich normalerweise bei dem Emailpattern automatisch aus, da ich nur Buchstaben von a - z und Zahlen sowie Unterstrich und Bindestrich erlaube
achso, die Anweisung "e" am Ende deines HTML-Patterns brauchst du nicht wirklich, da du ja keinen Programmcode verwendest. Stattdessen schreib ein "x" hin, dadurch werden alle Whitespacezeichen ( Leerzeichen, Zeilenumbrüche etc.) ignoriert solange sie nicht klar definiert worden sind.Empirismus, die lieblingsmethode aller mir bekannter Programmierer :]
-
Zeilenbremsen?Original geschrieben von Daxi
[...]
Zu beachten ist dabei nur, dass ich vorher (bevor ich die BBCode ersetze) dem Text Linebrakes einfüge.
[...]

*SCNR*Im Ruhestand.
Ähnliche Themen
-
URLs nur in bestimmten Fällen in anklickbare Links umwandeln (preg_replace)
Von mr_brusthaar im Forum PHPAntworten: 6Letzter Beitrag: 07.05.08, 15:57 -
URLs durch HTML-Links ersetzen
Von cameeel im Forum PHPAntworten: 8Letzter Beitrag: 06.07.06, 12:29 -
Links mit Variablen automatisch in ModRewrite fähige URLs umwandeln
Von hpatrick im Forum PHPAntworten: 6Letzter Beitrag: 17.06.06, 10:38 -
URLs anklickbar machen...
Von Jost im Forum PHPAntworten: 9Letzter Beitrag: 23.07.05, 21:18 -
e-mail adressen
Von Stephan Zesiger im Forum Hosting & WebserverAntworten: 20Letzter Beitrag: 15.07.02, 12:07





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren