【问题标题】:in codeigniter how can i get uri segments by name?在 codeigniter 中,我如何按名称获取 uri 段?
【发布时间】:2012-09-16 10:16:14
【问题描述】:

我有最新的 codeigniter 版本,我想知道如何通过参数名称获取 url 中的段。例如,这是一个示例 url:

www.somewebsitedomain.com/param1=something/param2=somethingelse/

现在假设我想获取“param1”的值,即“某物”,我将如何使用 uri 类来实现?

因为默认情况下 uri 类仅按数字或它们出现的顺序获取段,但我想通过该段中的参数名称获取段。或者一般只获取参数值。希望这是有道理的......

【问题讨论】:

    标签: php codeigniter url parameters uri


    【解决方案1】:

    你可以做$this->uri->uri_to_assoc(n),它会给出类似下面的东西

    [array]
     (
    'name' => 'joe'
    'location'  => 'UK'
    'gender'    => 'male'
    )
    

    然后只是你想要的参数名称。

    来源:http://codeigniter.com/user_guide/libraries/uri.html

    【讨论】:

    • 要使uri_to_assoc() 方法起作用,URI 必须采用以下格式:domain.tld/key/value/key2/value2/key3/value3 等。
    【解决方案2】:

    您实际上可以将它们作为 GET 变量并使用 Input Class:

    $param = $this->input->get('param1'); // something
    

    或者你可以这样做:

    $params = $this->input->get(); // array('param1' => 'something', 'param2' => 'somethingelse')
    

    获取所有参数

    【讨论】:

      【解决方案3】:

      我不确定这是您要问的,但在许多应用程序中,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;
      
          }
      
      }
      

      那么如果你的网址是在表单中

      www.somewebsitedomain.com/param1/something/param2/somethingelse/
      

      你可以这样调用这个函数:

      $this->uri->getNamed('param1) - 返回“某物”

      $this->uri->getNamed('param2) - 返回“其他东西”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多