Ale*_*lex 4 php url internationalization
我正在开发一个使用UTF8显示非英文字符的国际网站.我也使用包含项目名称的友好URL.显然我不能在URL中使用非英文字符.
这种转换有某种常见的做法吗?我不确定我应该用哪些英文字符替换它们.有些是非常明显的(比如è到e),但是我不熟悉的其他角色(例如ß).
您可以在URL路径中使用UTF-8编码数据.您只需要使用Percent编码对其进行编码(请参阅参考资料rawurlencode):
// ß (U+00DF) = 0xC39F (UTF-8)
$str = "\xC3\x9F";
echo '<a href="http://en.wikipedia.org/wiki/'.rawurlencode($str).'">'.$str.'</a>';
Run Code Online (Sandbox Code Playgroud)
这将回显http://en.wikipedia.org/wiki/ß的链接.现代浏览器将ß在位置栏中显示字符本身,而不是UTF-8(%C3%9F)中该字符的百分比编码表示.
如果你不想使用UTF-8但只想使用ASCII字符,我建议使用像ÁlvaroG.Vicario建议的音译.
我通常使用带有'ASCII // TRANSLIT'选项的iconv().这需要输入如下:
último año
Run Code Online (Sandbox Code Playgroud)
并产生如下输出:
'ultimo a~no
Run Code Online (Sandbox Code Playgroud)
然后我使用preg_replace()用短划线替换空格:
'ultimo-a~no
Run Code Online (Sandbox Code Playgroud)
...并删除不需要的字符,例如
[^a-z0-9-]
Run Code Online (Sandbox Code Playgroud)
它可能与阿拉伯语或中文没用,但它可以与西班牙语,法语或德语一起使用.