-1

我正在使用此函数在字符串中查找链接并将它们转换为 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

有什么帮助吗?

4

2 回答 2

1

尝试使用正则表达式模式

(?:(^)|(?<=(.)))((?<!^)https?://.*?(?=\1)|https?://.*?(?=\s|$))

网址_$2

于 2012-10-30T20:35:57.323 回答
0

要匹配拉丁字符,您应该使用 unicode 友好的正则表达式。像这样的东西应该工作:

@(https?://([-\pL\.]+[-\pL])+(:\pN+)?(/([\pL/_\.#-]*(\?\S+)?[^\.\s])?)?)@u
于 2012-10-30T21:03:12.640 回答