Kok*_*kos 5 php ascii utf-8 special-characters
因此,我正在构建一个使用已经设置的数据库源的网站,并且已经被客户端用于所有其他网站已有一段时间了.
他们通过外部程序填充这个数据库,我无法改变我获取数据的方式.
现在我有以下问题,有时候我会得到UTF-8字符串,有时候是ASCII字符串(我希望我的这些条款正确,有时它们对我来说仍然有点模糊).
所以我可以得到这个:Scénic或者Scénic.
现在的问题是,我必须将其转换为非特殊字符(因此它会成为Scenic).
我不认为有一个转换é为e(如果有告诉)的功能所以我可能需要为包含所有源和目的地的数组创建一个数组,但更大的问题是转换é到它时é不会破坏é那个功能.
或者我应该只创建一个包含所有内容 的数组
(例如:array('é'=>'e','é'=>'e');等等
我知道怎么去é到é,这样做utf8_encode(html_entity_decode('é')),但是将é通过此相同的函数将返回é.
也许我接近这个错误的方式,但在那种情况下,我很想知道我应该如何接近它.
Kok*_*kos 12
感谢@XzKto和PHP.net上的这条评论,我将slug函数更改为以下内容:
static function slug($input){
$string = html_entity_decode($input,ENT_COMPAT,"UTF-8");
$oldLocale = setlocale(LC_CTYPE, '0');
setlocale(LC_CTYPE, 'en_US.UTF-8');
$string = iconv("UTF-8","ASCII//TRANSLIT",$string);
setlocale(LC_CTYPE, $oldLocale);
return strtolower(preg_replace('/[^a-zA-Z0-9]+/','-',$string));
}
Run Code Online (Sandbox Code Playgroud)
我觉得这个setlocale部分有点脏,但这非常适合将特殊字符转换为它们的"普通"等价物.
输入a áñö ïß éèé回报a-ano-iss-eee