пользователь будет щелкать ссылку в электронном письме и захочет увидеть хеш-метку, отображаемую в электронном письме
Вам нужно закодировать ссылку на то, что Бен цитировал , прежде чем вставить ее в электронное письмо. То, что у вас сейчас есть, вообще не является URL.
Вы можете при желании кодировать пробел в +
вместо %20
в контексте параметров запроса, но вы абсолютно не можете включить необработанный пробел, потому что это определяющая характеристика URL-адресов, в которых у них нет пробелов. Если вы введете пробел в URL в веб-браузере, это тихо исправит ошибку, но почтовый клиент не сможет выбрать URL из простого текста, если он заполнен пробелами.
Иногда существует альтернативная функция, которая кодирует пробелы в +
вместо %20
. Обычно этого лучше избегать, так как +
недействителен при любых обстоятельствах, но при желании:
index.php?name=Ben&address=101+S+10th+St+Suite+%23301
тогда вы будете использовать PHP urlencode
функцию вместо более стандартной rawurlencode
.
В любом случае, вы должны кодировать хеш-код в %23
, потому что в противном случае хеш-код в URL-адресе HTTP означает идентификатор фрагмента (часть страницы, на которую нужно прокрутить браузер). Это не часть адреса самой страницы; он даже не передается из браузера на сервер, поэтому вы, конечно же, не сможете получить его из $_GET
или любого другого интерфейса.
В компоненте есть много других символов, таких как адрес, который должен быть% -кодирован перед вставкой в строку URL, иначе они оставят вас с недействительным или иным образом неработающим URL. Если весь этот %23
бизнес выглядит смешно в URL ... ну, вам придется с этим смириться. Вот как всегда выглядели URL.