misd/linkify

将文本中的URL和电子邮件地址转换为HTML链接

v1.1.4 2017-08-17 08:33 UTC

This package is auto-updated.

Last update: 2024-09-11 00:25:44 UTC


README

Build Status

将URL和电子邮件地址转换为可点击的链接。它可以在HTML片段(或纯文本)和完整的HTML页面上工作。

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

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

作者

  • Chris Wilkinson

它使用基于John Gruber的改进的宽松、精确的正则表达式模式,用于匹配URL

安装

composer require misd/linkify

使用方法

$linkify = new \Misd\Linkify\Linkify();
$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 \Misd\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 \Misd\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 为 true,则 $url 等于 $caption

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

$linkify = new \Misd\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.'));