2010-05-12 5 views
0

L'entrée: nous obtenons du texte brut en tant que chaîne d'entrée et nous devons mettre en surbrillance toutes les URL là avec <a href={url}>{url></a>. Depuis un certain temps, j'ai utilisé regex à partir de http://flanders.co.nz/2009/11/08/a-good-url-regular-expression-repost/, que j'ai modifié plusieurs fois, mais il est construit pour un autre problème - pour vérifier si toute la chaîne d'entrée est une URL ou non. Alors, quelle regex utilisez-vous dans de tels problèmes?Expression régulière (PCRE) pour la correspondance d'URL

UPD: ce serait bien si les réponses étaient liées à php: - [

Répondre

1

Jetez un oeil à quelques modules disponibles sur CPAN:

où ce dernier est un peu plus indulgent. Les expressions régulières sont disponibles dans le code source (the latter's, par exemple).

Par exemple:

#! /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; 

Sortie:

<a href="http://stackoverflow.com/users/251311/zerkms">http://stackoverflow.com/users/251311/zerkms</a> is swell!
Questions connexes