У меня есть поле формы HTML $_POST["url"]
с некоторыми URL-строками в качестве значения. Пример значений:
https://example.com/test/1234?email=xyz@test.com https://example.com/test/1234?basic=2&email=xyz2@test.com https://example.com/test/1234?email=xyz3@test.com https://example.com/test/1234?email=xyz4@test.com&testin=123 https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com
и т.п.
Как я могу получить только email
параметр из этих URL / значений?
Обратите внимание, что я не получаю эти строки из адресной строки браузера.
php
url-parsing
Асим Заиди
источник
источник
/(email=\w\@\w\.\w)/
или более продвинутые методы сопоставления. Просто даю вам идею. Смотритеpreg_match
функцию: php.net/manual/en/function.preg-match.phpОтветы:
Вы можете использовать
parse_url()
иparse_str()
для этого.Если вы хотите получить
$url
динамически с PHP, взгляните на этот вопрос:Получить полный URL в PHP
источник
Все параметры после
?
могут быть доступны с помощью$_GET
массива. Так,будет извлекать письма из URL.
источник
https://example.com?email=myemail@example.com
$email = $_GET['email']; $email === 'myemail@example.com';
Используйте методы parse_url () и parse_str () .
parse_url()
проанализирует строку URL в ассоциативный массив его частей. Поскольку вам нужна только одна часть URL, вы можете использовать ярлык для возврата строкового значения только с той частью, которую вы хотите. Далееparse_str()
создадим переменные для каждого из параметров в строке запроса. Мне не нравится загрязнять текущий контекст, поэтому предоставление второго параметра помещает все переменные в ассоциативный массив.источник
Используйте
$_GET['email']
для параметров в URL. Используйте$_POST['email']
для размещения данных в сценарии. Или использовать_$REQUEST
для обоих. Также, как уже упоминалось, вы можете использоватьparse_url()
функцию, которая возвращает все части URL. Используйте часть под названием «запрос» - там вы можете найти свой параметр электронной почты. Больше информации: http://php.net/manual/en/function.parse-url.phpисточник
address bar
. Эти URL являются просто строкамиIN
кода.Вы можете использовать код ниже, чтобы получить адрес электронной почты после? в URL
источник
Как уже упоминалось в другом ответе, лучшее решение использует
parse_url()
Вам нужно использовать комбинацию
parse_url()
иparse_str()
.parse_url()
URL синтаксического анализа и вернуть его компоненты , которые вы можете получить строку запроса с помощьюquery
ключа. Затем вы должны использоватьparse_str()
эту строку запроса синтаксического анализа и возвращать значения в переменную.Также вы можете сделать эту работу с помощью регулярных выражений .
preg_match()
Вы можете использовать,
preg_match()
чтобы получить конкретное значение строки запроса из URL.preg_replace()
Также вы можете использовать
preg_replace()
эту работу в одну строку!источник
Я создал функцию из ответа @Ruel . Вы можете использовать это:
Пример:
Благодаря @Ruel
источник
Это прекрасно работает для меня с помощью PHP
источник
источник
Гораздо более безопасный ответ, который меня удивляет, здесь еще не упомянут:
filter_input
Так что в случае вопроса вы можете использовать это, чтобы получить значение электронной почты из параметров получения URL:
$email = filter_input( INPUT_GET, 'email', FILTER_SANITIZE_EMAIL );
Для других типов переменных вы бы хотели выбрать другой / подходящий фильтр, такой как
FILTER_SANITIZE_STRING
.Я предполагаю, что этот ответ делает больше, чем именно то, о чем просит вопрос - получение необработанных данных из параметра URL. Но это однострочный ярлык с тем же результатом:
Также можно привыкнуть к захвату переменных таким образом.
источник
В Laravel я использую:
источник
Динамическая функция, которая анализирует строку URL и получает значение параметра запроса, переданного в URL
Вызовите функцию, чтобы получить результат
источник
Чтобы получить параметры из строки URL, я использовал следующую функцию.
Если URL-строк много, то вы можете использовать цикл, чтобы получить параметр 'email' из всех этих строк URL-адресов и сохранить их в массиве.
источник