Предполагая URL-адрес:
www.example.com/?val=1#part2
PHP может читать переменные запроса val1
используя массив GET.
Является ли значение хеша part2
также читается? Или это только до браузера и JavaScript?
Основная проблема в том, что браузер даже не отправит запрос с фрагментной частью. Часть фрагмента разрешается прямо в браузере. Так что это доступно через JavaScript.
В любом случае, вы можете разбить URL-адрес на биты, включая фрагмент, используя parse_url (), но это явно не ваш случай.
Простой тест, доступ к HTTP: // локальный: 8000 / привет Foo = бар # это-это-не выслали-сервер
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"Serving HTTP on 0.0.0.0 port 8000 ...
localhost - - [02/Jun/2009 12:48:47] code 404, message File not found
localhost - - [02/Jun/2009 12:48:47] "GET /hello?foo=bar HTTP/1.1" 404 -
Сервер получает запрос без #appendage — все, что после хеш-тега, является просто поиском якоря на клиенте.
Вы можете найти имя привязки, используемое в URL, с помощью javascript, используя, например:
<script>alert(window.location.hash);</script>
Функция parse_url () в PHP может работать, если у вас уже есть необходимая строка URL, включая фрагмент (http://codepad.org/BDqjtXix):
<?
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
Но я не думаю, что PHP получает информацию фрагмента, потому что это только для клиента.
Это можно получить из Javascript — как window.location.hash
, Оттуда вы можете отправить его на сервер, например, с помощью Ajax, или закодировать его и поместить в URL-адреса, которые затем можно будет передать на серверную сторону.
Хеш никогда не отправляется на сервер, поэтому нет.
Да, это правда, сервер не получает якорную часть. Однако есть обходной путь с использованием куки. Вы можете найти это здесь: http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
Ответ — нет.
Основное назначение хэша — прокрутить до определенной части страницы, где вы определили закладку. например Прокрутите до этой части при загрузке страницы.
Обзор будет прокручиваться так, что эта строка будет первым видимым контентом на странице, в зависимости от того, сколько контента следует за линией.
Да, Javascript может получить доступ к нему, и тогда простой вызов Ajax сделает волшебство
Я думаю, что хеш-значение используется только на стороне клиента, поэтому вы не можете получить его с помощью php.
Вы можете перенаправить его с помощью JavaScript к PHP, хотя.
<?php
$url=parse_url("http://domain.com/site/gallery/1?user=12#photo45 ");
echo $url["fragment"]; //This variable contains the fragment
?>
Это должно работать