在文本中寻找 URI 地址

URI地址识别与转换
介绍如何使用Perl的URI::Find模块从文本中自动查找并转换URL/URI为可点击链接,包括具体实例代码。

在文本中寻找 URI 地址

Category: Modules   Keywords: uri find

我们经常碰到这样的任务,在一段文本中找到 URL/URI 地址,然后让这个地址变为可以点击。
最寻常的方法就是用正则表达式来做。不过有时候这不是很理想。

CPAN 中有一个 URI::Find 模块专门来做这事。实例代码如下:

#!/usr/bin/perl
use strict;
use warnings;

use URI::Find;

my $text = <<HTML;
hi, it's from http://www.fayland.org/ then 1313s.com?
HTML

my $finder = URI::Find->new(
   sub {
       my($uri, $orig_uri) = @_;
       return qq|<a href="$uri">$orig_uri</a>|;
   });
$finder->find(/$text);

print $text;

这样 $text 的输出会变为:
hi, it's from <a href="http://www.fayland.org/">http://www.fayland.org/</a> then
1313s.com?
如果想让 1313s.com 也变为可点击,则可以使用 URI::Find::Schemeless

 

#!/usr/bin/perl
use strict;
use warnings;

use URI::Find::Schemeless;

my $text = <<HTML;
hi, it's from http://www.fayland.org/ then 1313s.com?
HTML

my $finder = URI::Find::Schemeless->new(
   sub {
       my($uri, $orig_uri) = @_;
       return qq|<a href="$uri">$orig_uri</a>|;
   });
$finder->find(/$text);

print $text;

Schemeless 的意思就是没有协议头(如 http )也匹配。
$text 变为:
hi, it's from <a href="http://www.fayland.org/">http://www.fayland.org/</a> the
<a href="http://1313s.com/">1313s.com</a>?
大致如是。详细的查阅 URI::Find , have fun!
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值