AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[php] Links verkürzen

Ein Thema von Angel4585 · begonnen am 5. Jan 2007 · letzter Beitrag vom 5. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

[php] Links verkürzen

  Alt 5. Jan 2007, 10:36
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

Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Kinimod8

Registriert seit: 9. Jan 2004
Ort: Barsbüttel
317 Beiträge
 
Delphi 6 Personal
 
#2

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 10:39
Du könntest dir mal die Funktion substr() anschauen.
Dominik Peters
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 10:59
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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 11:26
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
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 11:46
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')"
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 11:49
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);
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#7

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 11:57
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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 12:19
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
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#9

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 12:41
ä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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: [php] Links verkürzen

  Alt 5. Jan 2007, 12:51
Da bin ich jetzt überfragt.
Dürfte ein Fehler von RegexBuddy sein, denn dort funktioniert es; der äquivalente PHP-Code jedoch nicht.
Miniaturansicht angehängter Grafiken
regex_163.gif  
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
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