PHP:URL友好的字符串

Iva*_*var 2 php string url

可能重复:
重写'漂亮的URL'时如何处理变音符号(重音符号)

我想用"普通"字符(az和0-9之间的字符)替换特殊字符,例如ÅÄÖÜé.空间当然应该用破折号代替,但这不是一个真正的问题.

换句话说,我想转此:

enräksmörgås

进入这个:

EN-raksmorgas

最好的方法是什么?

先感谢您.

irc*_*ell 17

你可以使用iconv字符串替换...

$string = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $string);
Run Code Online (Sandbox Code Playgroud)

基本上,它会音译它可以的字符,并删除它不能的字符(不是ASCII字符集)...

然后,只需用以下内容替换空格str_replace:

$string = str_replace(' ', '-', $string);
Run Code Online (Sandbox Code Playgroud)

或者,如果您想获得幻想,可以使用简单的正则表达式将所有连续的空格字符替换为单个短划线:

$string = preg_replace('/\\s+/', '-', $string);
Run Code Online (Sandbox Code Playgroud)

编辑为@Robert Ros指出,您需要在使用之前设置区域设置iconv(取决于系统的默认值).只需在该行之前执行此iconv行:

setlocale(LC_CTYPE, 'en_US.UTF8');
Run Code Online (Sandbox Code Playgroud)

  • +1也看到:http://stackoverflow.com/questions/1284535/php-transliteration顺便说一句,重要的是你的语言环境设置正确,以便iconv transliteraion正常工作. (3认同)