PHPZend框架-如何从请求对象获取请求URI片段?

PHPZend框架-如何从请求对象获取请求URI片段?,php,zend-framework,request,uri,Php,Zend Framework,Request,Uri,比如说,我有一个URIhttp://127.0.0.1/somecontroller/someaction#12345将我带到someController的someAction()操作。从那里,我可以通过$this->getRequest()检索请求对象 我还能够从请求对象检索有关URI的各种信息 但是,我如何检索片段(例如,示例中#之后的“12345”部分)?无论是getRequestUri()还是getParams()都不会打开片段部分 谢谢 URL的片段部分永远不会通过GET请求(或任何类

比如说,我有一个URI
http://127.0.0.1/somecontroller/someaction#12345
将我带到someController的
someAction()
操作。从那里,我可以通过
$this->getRequest()
检索请求对象

我还能够从请求对象检索有关URI的各种信息

但是,我如何检索片段(例如,示例中#之后的“12345”部分)?无论是
getRequestUri()
还是
getParams()
都不会打开片段部分


谢谢

URL的片段部分永远不会通过GET请求(或任何类型的HTTP请求)发送到服务器,获得它的唯一方法是编写一个Javascript片段,解析URL并通过Ajax将片段发送回服务器


这不能仅用PHP来完成。

根据HTTP协议规范,片段部分被忽略。但是,浏览器确实支持使用散列的重定向

如果自动生成哈希,则可以将
id
作为请求参数传递:
http://127.0.0.1/somecontroller/someaction/id/12345/#12345

然后:

$this->getRequest()->getParam('id')


但是这将只处理哈希的情况,例如,当用户手动输入URL时。

您不能使用php函数
explode(“#“,$\u SERVER['REQUEST\u URI')?
可能我误解了这个问题。

您不能使用:

explode("#",$_SERVER['REQUEST_URI'])

因为当你调用
$\u SERVER['REQUEST\u URI']
时,你永远不会得到
.
后面的单词。例如,您的链接
www.example.com/about#test
,当您调用
$\u SERVER['REQUEST\u URI']
时,您只会得到
www.example.com/about

出于好奇,您的用例是什么?
explode
,根据PHP手册本身:返回字符串数组,每个字符串都是字符串的子字符串,通过在字符串分隔符形成的边界上拆分它而形成。