我正在尝试生成查询字符串。该函数适用于非utf8字符,但utf8字符显示为空白。
功能
function qs_search($qs) {
parse_str($_SERVER['QUERY_STRING'], $query_string);
$query_string['search'] = basename($qs);
return http_build_query($query_string);
}
这些是结果......
qs_search( '常规');
index.php?list&search=regular
qs_search( 'Синодальный');
index.php?list&search=
答案 0 :(得分:3)
根据评论,我仍然不知道你为什么使用basename
,但使用set_locale
将在PHP 5.2 +中工作:
<?php
function qs_search($qs) {
$query_string = array();
$query_string['search'] = basename($qs);
return http_build_query($query_string);
}
setlocale(LC_ALL, "en_US.UTF8");
var_dump(qs_search("regular"));
var_dump(qs_search("Синодальный"));
?>
As stated, this will NOT work on PHP 5.0.0 - 5.1.6. Click to see results.
修改强>:
显然,Drupal的开发人员遇到了同样的问题并因their own basename
function而创建了this bug,这应该可以解决您在PHP 5.0.0 - 5.1.6上的问题。