ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
1262
1262
EMPFEHLEN
-
29.11.06 23:05 #1
- Registriert seit
- Jun 2005
- Ort
- NB
- Beiträge
- 4
Hallo!
Also... folgende Funktion tut ihren Dienst ganz gut:
(wandelt URLs aus einem String in anklickbare Links um)PHP-Code:$text = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<A TARGET=\"_blank\" HREF=\"$1\">$1</A>", $text);
Aber: Ich habe im Text zum Beispiel auch schon Bilder drin, also Dinge wie <img src="http://www.domain.de/bild.jpg"> ... nun soll er natürlich diesen link NICHT umwandeln ... ich habe nun schon 2 Nächte damit verbracht, das Problem mit regulären Ausdrücken zu lösen, aber komme nicht weiter.
Könnte man denn irgendwie angeben, dass, wenn ein = oder ein =" vor http steht, dass dann die umwandlung nicht geschieht?
lieben Gruß
-
29.11.06 23:15 #2Kommt so oder so ähnlich in WordPress vor.PHP-Code:
function make_clickable($ret) {
$ret = ' ' . $ret . ' ';
$ret = preg_replace("#([\s\n>])(https?|ftp)://([^\s<>{}()]+[^\s.,<>{}()])#i", "$1<a href='$2://$3' rel='nofollow'>$2://$3</a>", $ret);
$ret = preg_replace("#([\s\n>])(www|ftp)\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^ <>{}()\n\r]*[^., <>{}()\n\r]?)?)#i", "$1<a href='http://$2.$3.$4$5' rel='nofollow'>$2.$3.$4$5</a>", $ret);
$ret = preg_replace("#([\s\n>])([a-z0-9\-_.]+)@([a-z0-9\-_.]+)\.([^,< \n\r]+)#i", "$1<a href=\"mailto:$2@$3.$4\">$2@$3.$4</a>", $ret);
$ret = preg_replace("#(<a [^>]+?>)<a [^>]+?>([^>]+?)</a></a>#i", "$1$2</a>", $ret);
$ret = trim($ret);
return $ret;
}
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
29.11.06 23:22 #3
- Registriert seit
- Jun 2005
- Ort
- NB
- Beiträge
- 4
hmz verdammt, diese funktion hatte ich schon gesehen beim durchsuchen des forums, aber hab nicht gesehen, dass sie das kann was ich meine
danke dir vielmals! klappt einwandfrei!
-
29.11.06 23:28 #4
Dann klick doch noch schnell auf "Erledigt" damit die anderen das auch sehen können.
Danke.KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
Hi!
Hab dein Script gefunden, und ich finds super! Ich arbeit jetzt schon länger an sowas, und das hilft mir echt weiter. Ich würde das Script gerne erweitern, indem ich ab einer bestimmten Zeichenlänge (z.B. 20 Zeichen) die URL automatisch gekürzt werden soll.
Ich würde gerne innerhalb des preg_replace folgende Funktion aufrufen:
Hat jemand eine Ahnung, ob das funktionieren kann?PHP-Code:function trimLinks($url) {
$shorturl = $url;
if(strlen($url)>20) {
$shorturl = substr($url, 0, 20)."...";
}
return $shorturl;
}
Ich hab das Problem, dass wenn ich die Funktion trimLinks() einfach so integriere...
... als Werte lediglich "$2.$3.$4$5" übergeben werden, und nicht die Url.PHP-Code:$ret = preg_replace("#([\s\n>])(www|ftp)\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^ <>{}()\n\r]*[^., <>{}()\n\r]?)?)#i", "$1<a href='http://$2.$3.$4$5' rel='nofollow'>".trimLinks("$2.$3.$4$5")."</a>", $ret);
Grüße,
debugger
-
PHP-Code:
$ret = preg_replace('#([\s\n>])((?:www|ftp)\.[a-z0-9\-]+\.[a-z0-9\-.\~]+(?:/[^ <>{}()\n\r]*[^., <>{}()\n\r]?)?)#ei', '"$1<a href=\"http://$2\" rel=\"nofollow\">".trimLinks("$2")."</a>"', $ret);
Markus Wulftange
-
Danke! Perfekt

Hier alles zusammen:
PHP-Code:function trimLinks($url) {
$shorturl = $url;
if(strlen($url)>30) {
$shorturl = substr($url, 0, 30)."...";
}
return $shorturl;
}
function make_clickable($ret) {
$ret = ' ' . $ret . ' ';
$ret = preg_replace('#([\s\n>])(https?|ftp)://([^\s<>{}()]+[^\s.,<>{}()])#ei', '"$1<a href=\"$2://$3\" rel=\"nofollow\">".trimLinks("$2://$3")."</a>"', $ret);
$ret = preg_replace('#([\s\n>])(www|ftp)\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^ <>{}()\n\r]*[^., <>{}()\n\r]?)?)#ei', '"$1<a href=\"http://$2.$3.$4$5\" rel=\"nofollow\">".trimLinks("$2.$3.$4$5")."</a>"', $ret);
$ret = preg_replace("#([\s\n>])([a-z0-9\-_.]+)@([a-z0-9\-_.]+)\.([^,< \n\r]+)#i", "$1<a href=\"mailto:$2@$3.$4\">$2@$3.$4</a>", $ret);
$ret = preg_replace("#(<a [^>]+?>)<a [^>]+?>([^>]+?)</a></a>#i", "$1$2</a>", $ret);
$ret = trim($ret);
return $ret;
}
echo make_clickable("Bisschen Text http://www.heise.de/newsticker/foren/S-Wem-ist-auch-aufgefallen/forum-135972/msg-14775905/read/<br /> dazwischen wieder ein weiterer text eine.email@domain.com und noch wein wenig Text");
Ähnliche Themen
-
Zugriff auf PHP-Datei nur von bestimmten Servern bzw. URLs
Von tomy69 im Forum PHPAntworten: 4Letzter Beitrag: 06.09.06, 18:02 -
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 -
preg_replace - E-Mail-Adressen und URLs zu Links machen
Von Daxi im Forum PHPAntworten: 5Letzter Beitrag: 09.09.03, 12:21 -
problem mit smilies und urls etc umwandeln
Von Rios im Forum PHPAntworten: 4Letzter Beitrag: 06.08.02, 13:05





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren