Как я могу выбрать фрагмент после символа '#' в моем URL-адресе с помощью PHP?
Результат, который я хочу, - «фото45».
Это пример URL:
http://example.com/site/gallery/1#photo45
php
url
anchor
url-fragment
Илия Веселица
источник
источник
Ответы:
Если вы хотите получить значение после метки решетки или привязки, как показано в браузере пользователя: это невозможно со «стандартным» HTTP, поскольку это значение никогда не отправляется на сервер (следовательно, оно не будет доступно в
$_SERVER["REQUEST_URI"]
или аналогичных предопределенные переменные). На стороне клиента вам понадобится какая-то магия JavaScript, например, чтобы включить это значение в качестве параметра POST.Если речь идет только о синтаксическом анализе известного URL из любого источника, ответ mck89 вполне подойдет .
источник
alert(window.location.hash);
window.location.hash
дает вам весь фрагмент, ВКЛЮЧАЯ#
знак [hash] ... и это, конечно же, в JavaScript :)var forms = document.getElementsByTagName('form'); for(var i=0; i<forms.length;i++) forms[i].addEventListener('submit',function(){ var hidden = document.createElement("input"); hidden.setAttribute('type','hidden'); hidden.setAttribute('name','fragment'); hidden.setAttribute('value',window.location.hash); this.appendChild(hidden); });
... в зависимости от "метода" вашей формы вы получаете хеш$_POST['fragment']
или$_GET['fragment']
.... MAGIC!Эта часть называется «фрагментом», и вы можете получить ее следующим образом:
источник
$fragment = parse_url("http://example.com/site/gallery/1#photo45", PHP_URL_FRAGMENT);
А) уже есть URL с #hash в PHP? Легко! Просто разбери это!
Или в "старом" PHP вы должны предварительно сохранить разнесенные фрагменты для доступа к массиву:
Б) Вы хотите получить #hash, отправив форму в PHP?
=> Используйте МАГИЮ JavaScript! (Для предварительной обработки формы)
В зависимости от ваших
form
«сmethod
атрибутом вы получаете этот хэш в PHP с помощью:$_GET['fragment']
или$_POST['fragment']
Возможные варианты возврата: 1.
""
[пустая строка] (без хеша) 2. весь хеш, ВКЛЮЧАЯ#
знак [hash] (потому что мы использовалиwindow.location.hash
JavaScript, который работает именно так :))C) Вы хотите получить #hash в PHP ТОЛЬКО из запрошенного URL?
ВЫ НЕ МОЖЕТЕ!
... (не учитывая обычные HTTP-запросы) ...
... Надеюсь, это помогло :)
источник
Я немного искал обходной путь для этого - и единственное, что я нашел, - это использовать перезапись URL для чтения «привязки». Я нашел здесь в документации apache http://httpd.apache.org/docs/2.2/rewrite/advanced.html следующее ...
У него могут быть другие предостережения, а что нет ... но я думаю, что по крайней мере что-то сделать с # на сервере возможно.
источник
Вы не можете получить текст после решетки . Он не отправляется на сервер в запросе.
источник
Я нашел этот трюк, если вы настаиваете на том, чтобы использовать PHP. разделите значение anchor (
#
) и получите его с помощью JavaScript, затем сохраните как cookie, после чего получите значение cookie с помощью PHPисточник
Вы можете сделать это с помощью комбинации javascript и php:
И с другой стороны;
Затем при отправке формы вы можете получить значение через $ _POST ['hash'] (установить форму)
источник
Если вы хотите динамически получать хэш из URL-адреса, это должно сработать: https://stackoverflow.com/a/57368072/2062851
источник
Сначала вам нужно проанализировать URL-адрес, поэтому он выглядит следующим образом:
Если вам нужно проанализировать фактический URL-адрес текущего браузера, вам нужно запросить вызов сервера.
источник
$_SERVER['REQUEST_URI']
вовсе не включает #fragmentПолучить данные после хеш-метки в строке запроса просто. Вот пример, когда клиент обращается к глоссарию терминов из книги. Он берет доставленный якорь имени (#tesla), доставляет клиента к этому термину и выделяет термин и его описание синим цветом, чтобы его было легко увидеть.
A. настройте свои строки с идентификатором div, чтобы привязка имени находилась там, где она должна была, и javascript мог изменять цвета текста
Б. Используйте Javascript для выполнения тяжелой работы на стороне сервера, вставленной на вашу страницу PHP или где-то еще.
C. Я автоматически запускаю java-функцию при загрузке страницы.
D. получить якорь (#tesla) из URL, полученного сервером
E. обрезать хеш-знак
F. Мне нужно выделить термин и описание, поэтому я создаю новый var
G. Теперь я могу изменять цвет текста для термина и описания.
Х. Это работает. клиент нажимает ссылку на стороне клиента (xyz.com # tesla) и переходит прямо к сроку. термин и описание выделены javascript синим цветом для быстрого чтения .. все остальные записи оставлены черным ..
источник