nahid/linkify

将文本中的URL和电子邮件地址转换为HTML链接,它扩展自Misd\Linify,也支持Laravel 5

1.0.0 2016-04-16 10:00 UTC

This package is auto-updated.

Last update: 2024-08-26 04:54:12 UTC


README

这是一个支持Laravel 5的Linkify包。它将URL和电子邮件地址转换为可点击的链接。它适用于HTML片段(或纯文本)和完整的HTML页面。

互联网上共享了执行此任务的大量正则表达式变体,但其中很少是健壮的。Linkify包含大量单元测试来应对这一问题。

它不包含所有可能的、尽管从未使用过的有效URL和电子邮件地址,以便处理“现实世界”的使用情况(例如,没有‘gopher://’)。这意味着,例如,它可以更好地处理标点符号错误。

作者

它使用基于John Gruber的改进的、自由的、精确的正则表达式模式来匹配URL

安装

  1. 将Linkify添加到依赖项中

    // composer.json
    
    {
       // ...
       "require": {
           // ...
           "nahid/linkify": "1.1.*"
       }
    }
    
  2. 使用Composer下载和安装Linkify

    $ php composer.phar update Nahid/linkify
    
  3. 打开 config/app.php 并在providers数组中添加以下行

    Nahid\Linkify\LinkifyServiceProvider::class,

    并在aliases数组中添加以下行

    'Linkify' => Nahid\Linkify\Facades\Linkify::class,
  4. 打开终端,进入您的项目并运行此命令

    composer dump-autoload
    

使用

    $text = 'This is my text containing a link to www.example.com.';

    echo Linkify::process($text);

将输出

    This is my text containing a link to <a href="http://www.example.com">www.example.com</a>.

选项

在构造函数上设置的选项将应用于所有链接。或者,您可以将选项放置在方法调用上。后者将覆盖前者。

    $linkify = new \Nahid\Linkify\Linkify(array('attr' => array('class' => 'foo')));
    $text = 'This is my text containing a link to www.example.com.';

    echo $linkify->process($text);

将输出

    This is my text containing a link to <a href="http://www.example.com" class="foo">www.example.com</a>.

    $linkify = new \Nahid\Linkify\Linkify(array('attr' => array('class' => 'foo')));
    $text = 'This is my text containing a link to www.example.com.';

    echo $linkify->process($text, array('attr' => array('class' => 'bar')));

将输出

    This is my text containing a link to <a href="http://www.example.com" class="bar">www.example.com</a>.

可用选项包括

attr

添加到链接的HTML属性的关联数组。例如

    array('attr' => array('class' => 'foo', 'style' => 'font-weight: bold; color: red;')

callback

一个闭包,用于对每个URL匹配进行调用。闭包将为每个找到的URL使用三个参数:URL、标题和布尔值 isEmail(如果 $isEmail 为真,则 $url 等于 $caption

如果回调返回非空值,则该值将替换结果文本中的链接。如果返回null,则使用通常的 <a href="URL">CAPTION</a>

    $linkify = new \Nahid\Linkify\Linkify(array('callback' => function($url, $caption, $isEmail) {
        return '<b>' . $caption . '</b>';
    }));
    echo $linkify->process('This link will be converted to bold: www.example.com.'));