Mam pole formularza HTML $_POST["url"]
z pewnymi ciągami adresów URL jako wartością. Przykładowe wartości to:
https://example.com/test/[email protected] https://example.com/test/1234?basic=2&[email protected] https://example.com/test/[email protected] https://example.com/test/[email protected]&testin=123 https://example.com/test/the-page-here/1234?someurl=key&[email protected]
itp.
Jak mogę uzyskać tylko email
parametr z tych adresów URL / wartości?
Pamiętaj, że nie otrzymuję tych ciągów z paska adresu przeglądarki.
php
url-parsing
Asim Zaidi
źródło
źródło
/(email=\w\@\w\.\w)/
lub bardziej zaawansowane techniki dopasowywania. Po prostu daję ci pomysł. Patrzpreg_match
funkcja: php.net/manual/en/function.preg-match.phpOdpowiedzi:
Możesz użyć do tego
parse_url()
iparse_str()
.Jeśli chcesz
$url
dynamicznie korzystać z PHP, spójrz na to pytanie:Uzyskaj pełny adres URL w PHP
źródło
?
Dostęp do wszystkich parametrów po można uzyskać za pomocą$_GET
tablicy. Więc,wyodrębni e-maile z adresów URL.
źródło
https://[email protected]
$email = $_GET['email']; $email === '[email protected]';
Użyj metod parse_url () i parse_str () .
parse_url()
przeanalizuje ciąg adresu URL w tablicy asocjacyjnej jego części. Ponieważ potrzebujesz tylko jednej części adresu URL, możesz użyć skrótu, aby zwrócić wartość ciągu tylko z żądaną częścią. Następnieparse_str()
utworzy zmienne dla każdego parametru w ciągu zapytania. Nie lubię zanieczyszczać bieżącego kontekstu, więc podanie drugiego parametru umieszcza wszystkie zmienne w tablicy asocjacyjnej.źródło
Użyj
$_GET['email']
dla parametrów w adresie URL. Użyj$_POST['email']
do wysłania danych do skryptu. Lub użyj_$REQUEST
dla obu. Ponadto, jak wspomniano, możesz użyćparse_url()
funkcji, która zwraca wszystkie części adresu URL. Użyj części o nazwie „zapytanie” - tam możesz znaleźć swój parametr e-mail. Więcej informacji: http://php.net/manual/en/function.parse-url.phpźródło
address bar
. Te adresy URL są po prostu ciągamiIN
kodu.możesz użyć poniższego kodu, aby później uzyskać adres e-mail? w adresie URL
źródło
Jak wspomniano w innej odpowiedzi, najlepszym rozwiązaniem jest użycie
parse_url()
Musisz użyć kombinacji
parse_url()
iparse_str()
.parse_url()
URL parse i zwraca jego składowe, które można uzyskać ciąg kwerendy przy użyciuquery
klucza. Następnie należy użyćparse_str()
tego ciągu zapytania analizy i zwrócić wartości do zmiennej.Możesz także wykonać tę pracę za pomocą wyrażenia regularnego .
preg_match()
Możesz użyć,
preg_match()
aby uzyskać określoną wartość ciągu zapytania z adresu URL.preg_replace()
Możesz także użyć
preg_replace()
do wykonania tej pracy w jednym wierszu!źródło
Stworzyłem funkcję z odpowiedzi @Ruel . Możesz użyć tego:
Przykład:
Dzięki @Ruel
źródło
Działa to świetnie dla mnie przy użyciu php
źródło
źródło
O wiele bardziej bezpieczna odpowiedź, która mnie dziwi, nie została jeszcze wspomniana:
filter_input
Więc w przypadku pytania możesz użyć tego, aby uzyskać wartość e-mail z adresu URL, pobierz parametry:
$email = filter_input( INPUT_GET, 'email', FILTER_SANITIZE_EMAIL );
W przypadku innych typów zmiennych chciałbyś wybrać inny / odpowiedni filtr, taki jak
FILTER_SANITIZE_STRING
.Przypuszczam, że ta odpowiedź robi więcej niż dokładnie to, o co pyta pytanie - pobieranie surowych danych z parametru URL. Ale jest to jednowierszowy skrót, który daje taki sam wynik jak ten:
Równie dobrze może nabrać zwyczaju chwytania zmiennych w ten sposób.
źródło
W Laravel używam:
źródło
Funkcja dynamiczna, która analizuje adres URL ciągu i pobiera wartość parametru zapytania przekazanego w adresie URL
Wywołaj funkcję, aby uzyskać wynik
źródło
Aby uzyskać parametry z ciągu adresu URL, użyłem następującej funkcji.
Jeśli istnieje wiele ciągów adresów URL, możesz użyć pętli, aby uzyskać parametr „email” ze wszystkich tych ciągów adresów URL i zapisać je w tablicy.
źródło