我最近从版本
更新了我的XAMMP1.7.4
到版本
1.8.2
我有一个函数将UTF8字符串“转换”为ASCII,从而生成有效的文件名。例如: “èàòü”将成为“eaou”
//converts all characters to ASCII equivalent (è->e)
function clearUTF($text){
$f = array("&amp", "&", "'", "ỳ");
$r = array("and", "and", "-", "y");
$text = str_replace($f, $r, html_entity_decode($text));
// replace non letter or digits by -
$text = preg_replace('#[^\\pL\d]+#u', '-', utf8_encode($text));
// trim
$text = trim($text, '-');
// transliterate
if (function_exists('iconv')){
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
}
// lowercase
$text = strtolower($text);
// remove unwanted characters
$text = preg_replace('#[^-\w]+#', '', $text);
if (empty($text)){
return 'n-a';
}
return $text;
}
此函数在旧版本的XAMMP上正常工作,但是当我在新版本上运行它时,我得到任何非ascii字符串的“n-a”(例如“andrè”)。我想这与编码或iconv函数有关。任何人都可以解释这种奇怪的行为吗?或者另一种看待问题的方法是:
两个版本的XAMPP之间有什么变化来改变这种行为? 这对于经历相同更新的其他人非常有用。我试图比较php.ini设置,但在那里找不到任何区别。
我应该提一下,作为输入传递的字符串来自数据库。但是对于两个XAMPP版本,表的校对是相同的。
我也尝试删除utf8_encode,但这并没有解决问题。
非常感谢