Possible Duplicate:
How to handle diacritics (accents) when rewriting 'pretty URLs'
我想用“普通”字符(a-z 和 0-9 之间的字符)替换特殊字符,例如 Å ä Ö Ü é。空格当然应该用破折号替换,但这并不是真正的问题。
换句话说,我想把它变成:
en räksmörgås
进入此:
en-raksmorgas
最好的方法是什么?
提前谢谢您。
最佳答案
您可以使用iconv
用于字符串替换...
$string = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $string);
基本上,它会 transliterate删除它可以使用的字符,并删除那些它不能使用的字符(不在 ASCII 字符集中)...
然后,只需将空格替换为 str_replace
:
$string = str_replace(' ', '-', $string);
或者,如果您想变得更奇特,您可以使用简单的正则表达式将所有连续的空白字符替换为单个破折号:
$string = preg_replace('/\\s+/', '-', $string);
编辑 正如 @Robert Ros 指出的,您需要在使用 iconv
之前设置区域设置(取决于系统的默认设置)。只需在 iconv
行之前执行此行即可:
setlocale(LC_CTYPE, 'en_US.UTF8');
关于PHP:URL 友好字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587625/