1

我正在尝试生成一个查询字符串。该函数适用于非 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=
4

1 回答 1

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("Синодальный"));
?>

如前所述,这不适用于 PHP 5.0.0 - 5.1.6。点击查看结果。

编辑

显然 Drupal 的开发人员也有同样的问题,并因为这个 bug创建了自己的basename函数,这应该可以解决您在 PHP 5.0.0 - 5.1.6 上的问题。

于 2012-11-08T17:03:24.770 回答