我可以用户 - 在功能,因为我想要干净的网址

时间:2014-08-07 10:42:05

标签: php codeigniter

我是Ci的新手我可以在函数中使用“ - ”,因为我需要干净的网址

例如

我的网址如下:   www.xyz.com//test/media_page?media_id=1&course_id=2

但我需要在下面:

www.xyz.com/test/media-page?media-id=1&course-id=2

当我更改功能时会说出一些错误,所以我确认了这一点,所以如果有任何想法请与我分享。

提前感谢....

请告诉我更多的事情,如果为此我必须更改任何东西。

3 个答案:

答案 0 :(得分:0)

您不能在PHP中使用函数名中的连字符。只接受字母,数字和下划线。

Function names follow the same rules as other labels in PHP. A valid function name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.

来自http://php.net/manual/en/functions.user-defined.php

如果要实现此目的,可以使用Code Igniter中的路由。或者,您可以在控制器中包含并实现_remap函数,以将带有连字符的URL发送到相应的函数,用下划线替换连字符。

答案 1 :(得分:0)

您可以在codeigniter中使用_remap()方法来实现此

示例

在测试控制器中使用此方法。您可以使用$ this-> input-> get()获取GET参数。这不会有任何麻烦

public function _remap($object, $params)
{

  //replace your hyphen as underscore
  $method = str_replace('-','_', $object);

   //verify method is exist or not
  if(!method_exists($this, $method_name))
  {
    //throw error or load default method index

    die();
  }

  //trigger the method
  call_user_func_array(array($this, $method_name), $params);

}

答案 2 :(得分:0)

您可能需要自定义CodeIgniter Routing才能将-翻译为_。这些方面的东西:

$route['test/media-page?media-id=:num&course-id=:num'] = "test/media_page?media_id=$1&course_id=$2";