2010-02-02 3 views
7

Скажем, например, У меня есть URI http://127.0.0.1/somecontroller/someaction#12345, который приводит меня в действие someAction() контроллера someController. Оттуда я могу получить объект Request через $this->getRequest().PHP Zend Framework - Как получить фрагмент URI запроса из объекта запроса?

Я также могу получить различную информацию относительно URI из объекта Request.

Но как я могу получить фрагмент (т. Е. Часть «12345» после #, например,)? Ни getRequestUri(), ни getParams() не включите фрагмент.

Спасибо!

+0

Просто из любопытства, какой был ваш прецедент? – balupton

ответ

26

Часть фрагмента URL-адреса никогда не отправляется на сервер через GET-запросы (или любой HTTP-запрос), единственный способ получить это - это написать фрагмент Javascript, который анализирует URL-адрес и отправляет фрагмент обратно на сервер через Ajax, например.

Это не может быть сделано с помощью PHP.

+0

Теперь я понимаю, спасибо! –

3

Согласно спецификации протокола HTTP часть фрагмента игнорируется. Однако браузеры поддерживают переадресацию с помощью хэша.

Если вы генерировать хэш автоматически, вы можете сдадите id в качестве параметра запроса: http://127.0.0.1/somecontroller/someaction/id/12345/#12345

, а затем:

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

Но это будет горячим обрабатывает случай, только с хэш, например когда пользователь вводит URL вручную.

0

Не могли бы вы использовать функции (-ы) php explode("#",$_SERVER['REQUEST_URI'])? Возможно, я неправильно понял вопрос.

1

Вы не можете использовать:

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

, потому что, когда вы звоните $_SERVER['REQUEST_URI'], вы никогда не получите слово после #. Например, ваша ссылка www.example.com/about#test, а когда вы позвоните $_SERVER['REQUEST_URI'], вы просто получите www.example.com/about.

+0

'explode', в соответствии с самим руководством PHP: * Возвращает массив строк, каждый из которых является подстрокой строки, образованной путем разбиения ее на границы, образованные разделителем строк. * –

 Смежные вопросы

  • Нет связанных вопросов^_^