Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [php] Links verkürzen (https://www.delphipraxis.net/83633-%5Bphp%5D-links-verkuerzen.html)

Angel4585 5. Jan 2007 09:36


[php] Links verkürzen
 
Hallo,

ich frage mich gerade wie das in der DP-Shoutbox funktioniert, das wenn man einen langen Link(z.B. die beliebten Youtube-Videos) postet, das dieser so abgekürzt wird?

Ich bastel auch egrade eine Shoutbox und da ist mir aufgefallen das lange urls das ding einfach sprengen und ich plötzlich ne horizontale scrollbar hab.

Ich hab jetzt folgende Funktion gefunden um aus urls wirklich einen Link zu machen:
Code:
function makelinks($string){
// URLs verlinken:
$string = ' ' . $string;
$string = preg_replace("#(^|[\n ])([\w]+?://.*?[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $string);
$string = preg_replace("#(^|[\n ])((www|ftp)\.[\w\-]+\.[\w\-.\~]+(?:/[^ \"\t\n\r<]*)?)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $string);
return $string;
};
das funktiniert Klasse, allerdings steht da dann auch tatsächlich der komplette Text als Link.
Wie kann ich den jetzt z.B. auf 15 Zeichen verkürzen?

Danke schonmal

:angel:

Kinimod8 5. Jan 2007 09:39

Re: [php] Links verkürzen
 
Du könntest dir mal die Funktion substr() anschauen.

Angel4585 5. Jan 2007 09:59

Re: [php] Links verkürzen
 
ja aber ih übergeben ja nicht einfach nur einen link sondern den gesamten Text, also sowas wie "Schaut mal dieses Video hab ich gerade gefunden _Link_ ist das nicht geil?" Da weis ich ja nicht wie genau der aussieht, also kann ich mit Substr nciht sehen wo der anfängt bzw wo der aufhört

faux 5. Jan 2007 10:26

Re: [php] Links verkürzen
 
Hallo!

Ich finde die Funktion irgendwie überladen: Wieso gleich ZWEI reguläre Ausdrücke, für das Finden eines Links?
Naja, aber der reguläre Ausdruck "findet" ja den Link, somit kannst du ihn kürzen.
Mein Vorschlag:

Code:
function makeurl($link)
{
   $url = '<a href="' . $link . '" target="_blank" title="' . $link . '">';
   $url .= ( strlen($link) > 15 ) ? substr($link, 0, 13) . '...' : $link;
   $url .= '</a>';
   return $url;
}

$string = 'Schau mal auf http://www.delphipraxis.net/! Dort findest du, was du brauchst.';

$string = preg_replace('/(\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ie', 'makeurl(\'\\1\')', $string);

echo $string;
Vl. kannst du damit was anfangen.

Grüße
Faux

Angel4585 5. Jan 2007 10:46

Re: [php] Links verkürzen
 
Zitat:

Zitat von faux
Hallo!
Code:
function makeurl($link)
{
   $url = '<a href="' . $link . '" target="_blank" title="' . $link . '">';
   $url .= ( strlen($link) > 15 ) ? substr($link, 0, 13) . '...' : $link;
   $url .= '</a>';
   return $url;
}

$string = 'Schau mal auf http://www.delphipraxis.net/! Dort findest du, was du brauchst.';

$string = preg_replace('/(\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ie', 'makeurl(\'\\1\')', $string);

echo $string;
Vl. kannst du damit was anfangen.

Grüße
Faux

nicht wirklich.. wenn ich das so mache wie du dann gibt es mir einfach "\\1" aus bz wenn ich die ' vor und nach makeurl stehen lasse "makeurl('\\1')" :roll:

faux 5. Jan 2007 10:49

Re: [php] Links verkürzen
 
Hast du den Modus e aktiviert?
Code:
preg_replace('/(\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i[color=red][b]e[/b][/color]', 'makeurl(\'\\1\')', $string);

Angel4585 5. Jan 2007 10:57

Re: [php] Links verkürzen
 
so.. habs jetz so wie du...jetz zerpflückt mir das aber auch richtige links,
also wenn da schon was mit
http://neseite.de/neseite.htm
steht dann kürzt er mir das im tag und das ausserhalb, deswegen warens bei mir glaub zwei :)

faux 5. Jan 2007 11:19

Re: [php] Links verkürzen
 
Hm...
Vl. damit:
Code:
/(?<!(<a href=")|(<a href=".+?">))(\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ie
Dann wird nicht ersetzt, wenn sich das ganze in einem A-Tag Befindet. Setzt natürlich vorraus, dass du den String vorher durch htmlspecialchars() jagst, damit ein vom User eingegebenes '<a' zu '&lt;a' wird.

Grüße
Faux

Angel4585 5. Jan 2007 11:41

Re: [php] Links verkürzen
 
ähm.. also da kamen zwei fehler.. den ersten konnt ich beheben(hoffe ich) indem ich die markierte klammer weggemacht hab.. der zweite taucht bei dem markierten Strich, bzw. an stelle 105 auf.

Code:
/(?<!(<a href=")|(<a href=".+?">[color=red][b])[/b][/color])(\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_[color=red][b]|[/b][/color]])/ie

faux 5. Jan 2007 11:51

Re: [php] Links verkürzen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da bin ich jetzt überfragt. :?
Dürfte ein Fehler von RegexBuddy sein, denn dort funktioniert es; der äquivalente PHP-Code jedoch nicht. :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz