URL数组编码器


URL array codeigniter

我正在使用codeigniter (codeigniter新手)。

我在控制器中有一个函数getproducts($p1, $p2, $p3)

当我调用getproducts/0/0/从我的jquery-script (ajax)它的工作,,但我想调用URL这样:

getproducts/0/0/{"0":"13","1":"24"}

它不起作用。(我进入谷歌搜索结果,而不是停留在我的本地web服务器)

我基本上想传递一个数组在url中的函数以某种方式使用编码器时。怎么解呢?请帮忙:-)

我认为你至少应该调整Codeigniter关于URL中允许字符的配置,包括花括号,逗号和双引号:

$config['permitted_uri_chars'] = ',{}"a-z 0-9~%.:_()@'-';

你最终出现在Google上的原因可能是别的(似乎与Codeigniter无关)

你的浏览器不认为这是一个URL,并导航到谷歌(认为你正在搜索的东西),我认为。

url的主要部分

第5节给出了URL语法的完整BNF描述。

通常,url是这样写的:

   <scheme>:<scheme-specific-part>

URL后面包含正在使用的方案的名称()由冒号和字符串(the)组成解释取决于方案。

方案名称由一个字符序列组成。小写字母字母"a"—"z",数字,字符"+",句号("。")和连字符("-")是允许的。对于弹性,是计划在解释url时,应该将大写字母等同于方案名称中的小写(例如,允许"HTTP"answers"HTTP")。

因此,只有字母数字、特殊字符"$-_.+!*'(),"和保留字符可以用于保留目的

schemepart     = *xchar | ip-schemepart

请参阅http://www.faqs.org/rfcs/rfc1738.html

{"0":"13","1":"24"}应该url编码。

http://php.net/manual/en/function.urlencode.php

我认为这个问题的更好的答案是使用内置的uri到关联数组处理程序。参见http://www.codeigniter.com/user_guide/libraries/uri.html?highlight=uri这就停止了对配置允许的uri字符的所有讨厌的胡闹。

你的uri将是:getproducts/p1/0/p2/0/p3/0/p5/13/p6/1/p6/24处理程序是这样的:

 function get_product()
 {
      $object = $this->uri->uri_to_assoc(4);
 }

您需要使用URI类的$this->uri->assoc_to_uri()

手册已写,

接受一个关联数组作为输入,并从中生成一个URI字符串。数组键将包含在字符串中。例子:

$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
$str = $this->uri->assoc_to_uri($array);
// Produces: product/shoes/size/large/color/red