我正在使用此函数查找字符串中的链接并将其转换为html链接
function makeClickableLinks($s) {
return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $s);
}
问题是它没有使用像这样的非拉丁字符的网址
https://www.facebook.com/pages/Celebração/123434584839
结果是
https://www.facebook.com/pages/Celebra��ão/123434584839
任何帮助?
答案 0 :(得分:1)
尝试使用正则表达式
(?:(^)|(?<=(.)))((?<!^)https?://.*?(?=\1)|https?://.*?(?=\s|$))
$2
答案 1 :(得分:0)
要匹配拉丁字符,您应该使用unicode friendly regex。这样的事情应该有效:
@(https?://([-\pL\.]+[-\pL])+(:\pN+)?(/([\pL/_\.#-]*(\?\S+)?[^\.\s])?)?)@u