我有 html/文本字符串,并希望将文本的所有类似链接的部分与带有 A 标签的真实超链接相匹配。对于这个问题,我正在尝试匹配“www.somesite.domen”模式。但是,如果模式接近句尾的标点符号怎么办。
如何匹配没有标点符号的最后一个字符的模式?
- www.somesite.domen。
- www.somesite.domen,
- www.somesite.domen?
- www.somesite.domen!
- www.somesite.domen/?id=1?
这是我正在使用的功能:
function make_links($text)
{
return preg_replace(
array(
'/(^|\s)(www\.[^<>\s!,]+)(!$|\s|\.|\:|\!|,|\?)/iex'
),
array(
"stripslashes((strlen('\\2')>0?'\\1<a target=\"_blank\" href=\"http://\\2\">\\2</a>\\3':'\\0'))"
),
$text
);
}
但是当'.' 或者 '?' 字符是句子中的最后一个,我的功能也将它们带入链接。
知道如何解决这种情况吗?谢谢!