jmbtechnologylimited / linkify
将文本中的URL和电子邮件地址转换为HTML链接
v1.1.2
2014-05-12 11:52 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-17 10:39:28 UTC
README
将URL和电子邮件地址转换为可点击的链接。它可以在HTML片段(或纯文本)和完整的HTML页面中工作。
互联网上共享了许多用于执行此任务的正则表达式变体,但其中很少是健壮的。Linkify包含大量单元测试来解决这个问题。
它不包含所有可能的有效但从未使用过的URL和电子邮件地址,以处理“真实世界”的使用(例如,没有“gopher://”)。这意味着,例如,它可以更好地处理标点符号错误。
它在2019年3月被分叉,因为原始维护者已经停止响应。请参阅https://github.com/misd-service-development/php-linkify
作者
- Chris Wilkinson
- JMB Technology https://www.jmbtechnology.co.uk/
它使用基于John Gruber的改进的宽松、准确的正则表达式模式来匹配URL。
安装
composer require jmbtechnologylimited/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.'));
开发者
有一个vagrant box。只需ssh进入并输入test进行测试。