PHP: STR replace by link

前端 未结 2 378
野的像风
野的像风 2021-01-17 04:32

i have this PHP chatbox.

If i would type a link in the chatbox, it would not display it as a link.

How can i use STR replace to do this?

It should re

相关标签:
2条回答
  • 2021-01-17 05:10

    You should use regex instead. look at preg_replace

    $regex = '`(\s|\A)(http|https|ftp|ftps)://(.*?)(\s|\n|[,.?!](\s|\n)|$)`ism';
    $replace = '$1<a href="$2://$3" target="_blank">$2://$3</a>$4'
    
    $buffer = preg_replace($regex,$replace,$buffer);
    
    0 讨论(0)
  • 2021-01-17 05:23

    Hey! Try this code (found at php.net somewhere):

    function format_urldetect( $text )
    {
    
      $tag = " rel=\"nofollow\"";
      //
      // First, look for strings beginning with http:// that AREN't preceded by an <a href tag
      //
      $text = preg_replace( "/(?<!<a href=(\"|'))((http|ftp|http)+(s)?:\/\/[^<>\s]+[\w])/i", "<a target=\"_new\" class=\"httplink\" href=\"\\0\"" . $tag . ">\\0</a>", $text );
      //
      // Second, look for strings with casual urls (www.something.com...) and make sure they don't have a href tag OR a http:// in front,
      // since that would have been caught in the previous step.
      //
      $text = preg_replace( "/(?<!<a href=(\"|')http:\/\/)(?<!http:\/\/)((www)\.[^<>\s]+[\w])/i", "<a target=\"_new\" class=\"httplink\" href=\"http://\\0\"" . $tag . ">\\0</a>", $te
    xt );
      $text = preg_replace( "/(?<!<a href=(\"|')https:\/\/)(?<!http:\/\/)((www)\.[^<>\s]+[\w])/i", "<a target=\"_new\" class=\"httplink\" href=\"http://\\0\"" . $tag . ">\\0</a>", $t
    ext );
      return $text;
    }
    

    Uhm, broken indentation. try this http://triop.se/code.txt

    0 讨论(0)
提交回复
热议问题