Я использую следующий код для перенаправления в PHP
header("Location:restaurantsList.php?msg=Restaurant 100#we updated successfully");
В restaurantsList.php
когда я пытаюсь получить request parameters
затем получить следующий массив.
Array ( [msg] => Restaurant 100 )
Значение параметра становится усеченным после '#'
,
Если передать любой нормальный текст в параметре (без #), то я получаю всю строку как есть.
Есть ли решение, чтобы получить строку, как есть, даже если строка будет содержать #
?
Вам следует URL кодировать специальные символы в строке запроса, чтобы ваш URL выглядел следующим образом:
header("Location:restaurantsList.php?msg=Restaurant%20100%23we%20updated%20successfully");
#
Символ используется для якорных ссылок и поэтому должен быть закодирован, если используется в качестве «данных» в URL. Вы можете использовать urlencode
PHP функция для этого. #
символ будет переводиться в %23
в URL #
вести себя как хэш-тег, который называется Fragment identifier
Javascript: window.location.hash
; // это жало возврата, начинающееся с #
тег
Вам нужно будет закодировать компонент URL в коде на стороне сервера, чтобы сохранить сообщение
header("Location:restaurantsList.php?msg=".
urlencode("Restaurant 100#we updated successfully"));
ИЛИ ЖЕ
header("Location:restaurantsList.php?msg=Restaurant 100%23we updated successfully");
Вам нужно urlencode
строка после msg=
:
header("Location:restaurantsList.php?msg=" . urlencode("Restaurant 100#we updated successfully");