Codeigniter RESTful API服务器不返回URL中的特殊字符

时间:2014-04-02 09:46:57

标签: php mysql codeigniter

我有这个应用程序,我使用Codeigniter作为Backend和BackboneJS作为前端。因此,为了显示数据,我使用了Phil Sturgeon的Restserver。在这种情况下,用户可以单击一个字母来显示艺术家。现在,因为我使用丹麦字母表,我的网址中显示丹麦字符有问题 - >我收到404错误。

所以我尝试将它添加到Codeigniter中的config.php:

$config['permitted_uri_chars'] = 'æ ø å a-z 0-9~%.:_\-';

在我的root index.php中,我添加了一些hack:

'artists\/[a-zA-Z]',
'artists\/[øØ]',
'artists\/[æÆ]',
'artists\/[åÅ]',
'artists\/0-9',
...etc

但是,这不起作用。我发现404页面未找到错误,检查器工具中的网络选项卡总是告诉我%C3%A6 ...

我的带有MySQL查询的API如下所示:

public function letter_get($letter)
    {
        $this->load->database();

        if($letter == '0-9')
        {
            $where = "formated_name LIKE '0%' OR formated_name LIKE '1%' OR formated_name LIKE '2%' 
            OR formated_name LIKE '3%' OR formated_name LIKE '4%' OR formated_name LIKE '5%' OR formated_name LIKE '6%' OR formated_name LIKE '7%' OR formated_name LIKE '8%' OR formated_name LIKE '9%' OR formated_name LIKE '#%'";
        }
        else 
        {
            $where = "formated_name LIKE '".$letter."%'";
        }

        $sql = "SELECT artist_id, formated_name FROM artists WHERE ".$where;
        $query = $this->db->query($sql);
        $data = $query->result();

        if($data) {
            $this->response($data, 200); 
        } else {
            $this->response(array('error' => 'Couldn\'t find any artists with this letter!'), 404);
        }
    }

所以也许我必须在这里添加一些东西?

有谁知道该怎么做?

提前致谢...

0 个答案:

没有答案