如何从url获取参数?

时间:2012-07-20 12:57:26

标签: php codeigniter

我一直在使用Code Igniter开发PHP页面。控制器有一些功能:

public function language_testing($language_code, $logout=0)
{      
      echo ($language_code);
      //come actions
}

我正在尝试发送以下网址:http://mypage.com/index.php/controller/language_testing/bg#9

但是我的功能显示“bg”而不是“bg#9”。请告诉我,如何在“#”之后获得内容?我非常需要它。

5 个答案:

答案 0 :(得分:1)

您应该发布到以下网址,以使值显示在$logout

http://mypage.com/index.php/controller/language_testing/bg/9

否则,服务器无法访问井号后面的数据。

答案 1 :(得分:1)

http://au.php.net/manual/en/function.parse-url.php

$urlComp=parse_url($yourURL);
echo $urlComp['fragment'];

答案 2 :(得分:0)

你做不到。 #是一个HTML书签,用于使用HTML元素上的ID重定向焦点。浏览器不会将此作为服务器URL的一部分提交。

根据您的重写规则,您要么想要创建一个语义上令人愉悦的链接,例如http://site.com/path/index.php/bg/9http://site.com/path/index.php?bg=9(这也是您的重写规则将会实现的目标)。

请注意,如果您因某种原因确实需要提交#符号,那么您需要使用网址中的%23提交它(@ jth_92将其打败)。

答案 3 :(得分:0)

您需要更改函数params为代码添加一个参数

public function language_testing($language, $code , $logout=0){      
  echo ($language);
  echo ($code);
  //come actions

}

并称之为      http://mypage.com/index.php/controller/language_testing/bg/9

它将解决您的问题,然后您可以连接两个值

答案 4 :(得分:0)

#是一个HTML实体,用于锚标记以跳转到名称引用。例如:

<a href="#test">Jump to test on page</a>
<a name="test">Test</a>

因此,它不会被解释为参数的一部分。您应该能够使用bg%23,因为%23是散列的转义字符。

http://mypage.com/index.php/controller/language_testing/bg%239

How to escape hash character in URL