URI段到代码点火器中的关联数组

时间:2012-01-06 11:13:55

标签: php codeigniter url associative-array

我有以下网址:

www.example.com/index.php/search/search_data/Doctor:a/Gender:Male/Language:Urdu/

我希望将其转换为像

这样的关联数组
$data=array(
       'Doctor'=> 'a',
       'Gender'=> 'Male',
       'Language'=> 'Urdu'
);

我尝试使用codeIgniter的URI类函数

来做到这一点
$this->uri->uri_to_assoc(n)

但由于它接受通过'/'分隔的数据,但我的数据是':'作为分隔符。

请帮帮我。

2 个答案:

答案 0 :(得分:2)

我认为没有更简单的方法可以做到这一点,而不是手动完成。

首先,检索总段,循环,看它是否包含“:”,然后将其添加到数组中。

$segments = $this->uri->segment_array();

$search_array = array();

foreach($segments as $segment) {
    if (strpos($segment, ":") !== FALSE) {
       $e_array = explode(":", $segment);
       $search_array[$e_array[0]] = $e_array[1];
    }
}

在某处运行该代码段会为您提供理想的结果, $ search_array 将是一个关键数组,其中key =>值。

答案 1 :(得分:0)

你可以破解URI.php文件。将第431-439行更改为;

if (strpos($seg, ":") !== FALSE) {
    list($parameter, $value) = explode(':', $seg);
    if ($i % 2) {
        $retval[$parameter] = $value;
    } else {
        $retval[$parameter] = $value;
        $lastval = $seg;
    }
} else {
    if ($i % 2) {
        $retval[$lastval] = $seg;
    } else {
        $retval[$seg] = FALSE;
        $lastval = $seg;
    }
}