PHPZend框架-如何从请求对象获取请求URI片段?
比如说,我有一个URIPHPZend框架-如何从请求对象获取请求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请求(或任何类
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手册本身:返回字符串数组,每个字符串都是字符串的子字符串,通过在字符串分隔符形成的边界上拆分它而形成。