【问题标题】:PHP: STR replace by linkPHP:STR通过链接替换
【发布时间】:2009-10-19 08:14:37
【问题描述】:

我有这个 PHP 聊天框。

如果我在聊天框中键入链接,它不会将其显示为链接。

如何使用 STR 替换来做到这一点?

它应该响应诸如“http”“http://”“.com”“.nl”“www”“www”之类的内容。 ....

我的其他 STR 替换行如下所示:

$bericht = str_replace ("STRING1","STRINGREPLACEMENT1",$bericht);

有人吗?

【问题讨论】:

    标签: php text hyperlink


    【解决方案1】:

    嘿!试试这段代码(在 php.net 某处找到):

    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;
    }
    

    嗯,压痕损坏。试试这个http://triop.se/code.txt

    【讨论】:

    • 谢谢,这让我上路了。
    【解决方案2】:

    您应该改用正则表达式。看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);
    

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2013-07-12
      • 2014-09-20
      相关资源
      最近更新 更多