-1

この関数を使用して、文字列内のリンクを検索し、それらを html リンクに変換していました

function makeClickableLinks($s) {
  return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $s);
}

問題は、このような非ラテン文字の URL では機能しないことです。 https://www.facebook.com/pages/Celebração/123434584839

その結果は https://www.facebook.com/pages/Celebra��ão/123434584839

何か助けはありますか?

4

2 に答える 2

1

正規表現パターンを使用してみてください

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

URLを持っている$2

于 2012-10-30T20:35:57.323 に答える
0

ラテン文字を一致させるには、Unicode に適した正規表現を使用する必要があります。このようなものが動作するはずです:

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