regex: url verlinken und kürzen

  • hallo zusammen. schon wieder eine frage :)
    mit folgendem code verlinke ich in einem string alle URL's mit der entsprechenden adresse:

    Code
    $string = preg_replace("#(^|[\n ])([\w]+?://.*?[^ \"\n\r\t<]*)#is", "\\1<a target=\"_blank\" href=\"\\2\">[link]</a>", $string);

    also aus "http://forum-hilfe.de" wird "<a href="http://forum-hilfe.de">"

    dies ist in einem forum. wenn ein user jetzt eine längere URL eingibt (nur schon zum beispiel http://forum-hilfe.de/posting.php?mo…f5de5e88b58c73c) verzieht es das design, da der text nicht umgebrochen wird (keine leerzeilen).

    kann ich innerhalb dieser regex den string (\\2) irgendwie kürzen?
    danke und gruss

  • ja aber nur mittels einer preg_replace funktion

    also so in der art:

    Code
    $string = preg_replace_callback("#(^|[\n ])([\w]+?://.*?[^ \"\n\r\t<]*)#is",
         create_function(
           '$matches',
           'return $matches[0]."<a target=\"_blank\" href=\"{$matches[1]}\">".wordwrap( $matches[1], 40, "
    \n", TRUE )."</a>";'
         ),
         $string
       );
  • Du könntest testen wie lang der string ist und dann den einfach verkürzt eingeben!

    Warum du das ganze so kompliziert einfügst weiss ich nicht!
    Ich würds so schreiben!

    Code
    <?
    $url = "http://www.forum-hilfe.de";  
    $zeichensperre = 25;
    echo' <a href=" '.$url.' " target="_blank">';
      if (strlen($url) > $zeichensperre) echo substr($url,0,$zeichensperre).'...'; 
      else echo $url;
    echo '</a>';
    
    
    ?>


    Noch nicht getestet, aber müsste klappen! 8)

    Auf alten Pferden lernt man reiten - Und auf jungen; gehst du kaputt! *g