我想用"普通"字符(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)