0

我有一个正则表达式,它接受一个类似于 bbcode 的字符串并将其转换为 html 链接。它工作正常。但是,我想让它检测链接的类型(内部/外部)来决定是严格使用绝对(外部)url,http://extsite.com/category/keyword/还是使用内部url的一部分,category/keyword/并将其附加到预定义的url,比如$url . category/keyword/

正则表达式如下:

preg_replace('/\[([^\]]+)\]\[([^\]"]+)\]/i', '<a href="$2">$1</a>', $text)

任何建议将不胜感激。

4

1 回答 1

1

根据您的评论,我假设任何以 http://(或任何类似协议,例如 ftp://)开头的链接都是绝对链接。任何其他链接都将被视为相对链接(并以 $url 为前缀)

// replace absolute links
$text = preg replace ('/\[([^\]]+)\]\[([A-Za-z]+:\/\/[^\]"]+)\]/i',
                      '<a href="$2">$1</a>', $text )


// replace all remaining (relative) links
// $url must have a tailing slash '/'
$text = preg replace ('/\[([^\]]+)\]\[([^\]"]+)\]/i',
                      '<a href="'.$url.'$2">$1</a>', $text )
于 2012-04-28T10:11:26.330 回答