求助:怎么把文本中的url和email替换成相应的html标记

求助:怎么把文本中的url和email替换成相应的html标记

从前台页面的文本域获得文件,计为变量$content
比如
$content="欢迎光临http://bbs.chinaunix.net 我的email是abc@ddd.com";
$content=~/(url匹配表达式)/<a href=$1>$1<\/a>/g;
$content=~/(email匹配表达式)/<a mailto=$1>$1<\/a>/g;

就是不知道这个url匹配和email的匹配怎么写,最好考虑全面点,url也可以处理https,ftp等

急着用,忘告诉赐教!!
不全面,仅供参考

$content =~ s{(http://[\w\.]+)}{<a href="$1">$1</a>}g;
$content =~ s{([\w\.]+@[\w\.]+)}{<a mailto="$1">$1</a>}g;


QUOTE:
原帖由 cobrawgl 于 2008-4-13 19:23 发表
不全面,仅供参考

$content =~ s{(http://[\w\.]+)}{$1}g;
$content =~ s{([\w\.]+@[\w\.]+)}{$1}g;

好用,就是得再加上https ftp 的判断,且也要能认出没有http等开头的url地址,具体估计是用?,但不知道怎么用



QUOTE:
原帖由 riverlee2008 于 2008-4-13 19:31 发表


好用,请问一下“\.”表示什么啊?

这两个正则式只是针对你给的那个 $content 管用,你应该多测试一下,像 email 用户名里可以有数字、下画线什么的,都没加进去呢。

. 是个元字符啊,email 用户名里好像可以有 . 吧?
又改了改 url 中都可能包含哪些字符?

$content =~ s{(((https?|ftp)://)?[\w\d\.]+)}{<a href="$1">$1</a>}g;



QUOTE:
原帖由 cobrawgl 于 2008-4-13 19:43 发表
$content =~ s{(((https?|ftp)://)?[\w\.]+)}{$1}g;

这个就有问题了,
$content='欢迎光临://bbs.chinaunix.net 我的email是rivre2008@ddd.com';  
输出结果是:
欢迎光临://<a href="bbs.chinaunix.net">bbs.chinaunix.net</a> 我的<a href="email">email</a>是<a href="rivre2008">rivre2008</a>@<a href="ddd.com">ddd.com</a>

哈,你是不是考虑一下 html 相关的模块啊,这个我也不太明白
还是谢谢你,我在搜搜
“能认出没有http等开头的url地址”这个要求不容易做到,email地址中 @ 后面的部分肯定符合这个要求啊,没办法
十分感谢 cobrawgl, 有问题再请教,共同学习