如何从网址获取参数?

问题描述:

我一直在使用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”。请告诉我,如何在“#”之后获得内容?我非常需要它。

你应该张贴到以下网址来获取值出现在$logout

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

否则,英镑符号后的数据不是由服务器访问。

+1

它不上来的话 - 锚是严格的客户端。 – Martin 2012-07-20 13:00:17

+0

你是说没有办法用#发送内容? – user1538002 2012-07-20 13:02:42

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

根据您的重写规则,您可能要创建一个语义愉快的链接,如http://site.com/path/index.php/bg/9http://site.com/path/index.php?bg=9(这是您的重写规则将实现的目标)。

请注意,如果您确实需要提交#标志因某种原因,那么您需要在URL中使用%23(@ jth_92击败我)来提交它。

您需要更改功能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

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

#是一个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

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

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