我有最新的 codeigniter 版本,想知道如何通过参数名称获取 url 中的段。例如,这是一个示例 url:
www.somewebsitedomain.com/param1=something/param2=somethingelse/
现在假设我想获得'param1'的值,即'something',我将如何使用uri类来做到这一点?
因为默认情况下,uri 类仅按数字或它们出现的顺序获取段,但我想通过该段中的参数名称获取段。或者一般只获取参数值。希望这是有道理的...
我有最新的 codeigniter 版本,想知道如何通过参数名称获取 url 中的段。例如,这是一个示例 url:
www.somewebsitedomain.com/param1=something/param2=somethingelse/
现在假设我想获得'param1'的值,即'something',我将如何使用uri类来做到这一点?
因为默认情况下,uri 类仅按数字或它们出现的顺序获取段,但我想通过该段中的参数名称获取段。或者一般只获取参数值。希望这是有道理的...
你可以这样做$this->uri->uri_to_assoc(n)
,这将给出如下内容
[array]
(
'name' => 'joe'
'location' => 'UK'
'gender' => 'male'
)
然后只是你想要的参数名称。
您实际上可以将它们作为 GET 变量并使用Input Class:
$param = $this->input->get('param1'); // something
或者你可以这样做:
$params = $this->input->get(); // array('param1' => 'something', 'param2' => 'somethingelse')
获取所有参数
我不确定这是您要问的,但在许多应用程序中,URL 遵循 www.domain.com/controller/method/key1/value1/key2/value2 的形式。所以我决定扩展 CI_URI 类以返回任何“键”的值。
如果你把它放在你的应用程序/核心文件夹中,在一个名为 MY_URI.php 的文件中,它会扩展内置的 URI 类:
class MY_URI extends CI_URI {
/* call parent constructor */
function __construct() {
parent::__construct();
}
/* return value of the URI segment
which immediately follows the named segment */
function getNamed($str=NULL) {
$key = array_search($str, $this->segments);
if ($key && isset($this->segments[$key+1])) {
return $this->segments[$key+1];
}
return false;
}
}
然后,如果您的 URL 采用以下形式
www.somewebsitedomain.com/param1/something/param2/somethingelse/
您可以按如下方式调用此函数:
$this->uri->getNamed('param1)
- 返回“某物”
$this->uri->getNamed('param2)
- 返回“其他东西”