2010-05-12 3 views
0

Вход: мы получаем некоторый простой текст в качестве входной строки, и нам нужно возвысить все URL-адреса там с <a href={url}>{url></a>.Регулярное выражение (PCRE) для сопоставления URL-адресов

В течение некоторого времени я использовал регулярное выражение, взятое из http://flanders.co.nz/2009/11/08/a-good-url-regular-expression-repost/, которое я несколько раз менял, но он создан для другой проблемы - чтобы проверить, является ли вся строка ввода URL-адресом или нет.

Итак, какое регулярное выражение вы используете в таких вопросах?

UPD: было бы хорошо, если бы ответы были связаны с PHP: - [

ответ

1

Посмотрите на пару модулей, доступных на CPAN:

, где последний является более снисходителен. Регулярные выражения доступны в исходном коде (например, the latter's).

Например:

#! /usr/bin/perl 

use warnings; 
use strict; 

use URI::Find::Schemeless; 

my $text = "http://stackoverflow.com/users/251311/zerkms is swell!\n"; 

URI::Find::Schemeless 
    ->new(sub { qq[<a href="$_[0]">$_[0]</a>] }) 
    ->find(\$text); 

print $text; 

Выход:

<a href="http://stackoverflow.com/users/251311/zerkms">http://stackoverflow.com/users/251311/zerkms</a> is swell!
Смежные вопросы