我有一个正则表达式,它接受像bbcode这样的字符串并将其转换为html链接。它工作正常。但是,我想让它检测链接的类型(内部/外部)来决定是否严格使用绝对(外部)网址,如http://extsite.com/category/keyword/
或使用内部网址的部分,如category/keyword/
并将其附加到预定义的网址$url . category/keyword/
正则表达式如下:
preg_replace('/\[([^\]]+)\]\[([^\]"]+)\]/i', '<a href="$2">$1</a>', $text)
任何建议都将非常感谢。
答案 0 :(得分: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 )