Ich habe ein HTML-Formularfeld $_POST["url"]
mit einigen URL-Zeichenfolgen als Wert. Beispielwerte sind:
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]
etc.
Wie kann ich nur den email
Parameter von diesen URLs / Werten erhalten?
Bitte beachten Sie, dass ich diese Zeichenfolgen nicht über die Adressleiste des Browsers erhalte.
php
url-parsing
Asim Zaidi
quelle
quelle
/(email=\w\@\w\.\w)/
oder fortgeschrittenere Matching-Techniken sein. Ich gebe dir nur die Idee. Siehepreg_match
Funktion: php.net/manual/en/function.preg-match.phpAntworten:
Sie können das
parse_url()
undparse_str()
dafür verwenden.Wenn Sie das
$url
dynamisch mit PHP erhalten möchten, werfen Sie einen Blick auf diese Frage:Holen Sie sich die vollständige URL in PHP
quelle
Auf alle Parameter danach
?
kann mit einem$_GET
Array zugegriffen werden . So,extrahiert die E-Mails aus URLs.
quelle
https://[email protected]
$email = $_GET['email']; $email === '[email protected]';
Verwenden Sie die Methoden parse_url () und parse_str () .
parse_url()
analysiert eine URL-Zeichenfolge in ein assoziatives Array seiner Teile. Da Sie nur einen einzelnen Teil der URL möchten, können Sie eine Verknüpfung verwenden, um einen Zeichenfolgenwert mit nur dem gewünschten Teil zurückzugeben. Als Nächstesparse_str()
werden Variablen für jeden der Parameter in der Abfragezeichenfolge erstellt. Ich mag es nicht, den aktuellen Kontext zu verschmutzen. Wenn Sie also einen zweiten Parameter angeben, werden alle Variablen in einem assoziativen Array zusammengefasst.quelle
Verwendung
$_GET['email']
für Parameter in der URL. Verwendung$_POST['email']
für gesendete Daten zum Skript. Oder_$REQUEST
für beide verwenden. Wie bereits erwähnt, können Sie auch eineparse_url()
Funktion verwenden, die alle Teile der URL zurückgibt. Verwenden Sie einen Teil namens "Abfrage" - dort finden Sie Ihren E-Mail-Parameter. Weitere Informationen: http://php.net/manual/en/function.parse-url.phpquelle
address bar
. Diese URLs sind nur ZeichenfolgenIN
des Codes.Sie können den folgenden Code verwenden, um die E-Mail-Adresse nach zu erhalten? in der URL
quelle
Wie in anderen Antworten erwähnt, ist die beste Lösung die Verwendung
parse_url()
Sie müssen die Kombination von
parse_url()
und verwendenparse_str()
.Die
parse_url()
Analyse-URL und geben ihre Komponenten zurück, die Sie mit demquery
Schlüssel abfragen können . Dann sollten Sieparse_str()
diese Analyse-Abfragezeichenfolge verwenden und Werte in Variablen zurückgeben.Sie können diese Arbeit auch mit Regex ausführen .
preg_match()
Sie können verwenden
preg_match()
, um einen bestimmten Wert der Abfragezeichenfolge von der URL abzurufen.preg_replace()
Sie können
preg_replace()
diese Arbeit auch in einer Zeile ausführen!quelle
Ich habe eine Funktion aus @Ruel Antwort erstellt . Sie können dies verwenden:
Beispiel:
Danke an @Ruel
quelle
Dies funktioniert gut für mich mit PHP
quelle
quelle
Eine viel sicherere Antwort, die mich überrascht, wird hier noch nicht erwähnt:
filter_input
Im Fall der Frage können Sie dies verwenden, um einen E-Mail-Wert von den URL-Abrufparametern abzurufen:
$email = filter_input( INPUT_GET, 'email', FILTER_SANITIZE_EMAIL );
Für andere Variablentypen möchten Sie einen anderen / geeigneten Filter auswählen, z
FILTER_SANITIZE_STRING
.Ich nehme an, diese Antwort macht mehr als genau das, was die Frage verlangt - das Abrufen der Rohdaten aus dem URL-Parameter. Dies ist jedoch eine einzeilige Verknüpfung, die das gleiche Ergebnis wie das folgende ergibt:
Könnte sich auch angewöhnen, auf diese Weise Variablen zu erfassen.
quelle
In Laravel verwende ich:
quelle
Dynamische Funktion, die die Zeichenfolgen-URL analysiert und den Wert des in der URL übergebenen Abfrageparameters abruft
Rufen Sie Function auf, um das Ergebnis zu erhalten
quelle
Um Parameter aus der URL-Zeichenfolge abzurufen, habe ich die folgende Funktion verwendet.
Wenn es viele URL-Zeichenfolgen gibt, können Sie die Schleife verwenden, um den Parameter 'email' von all diesen URL-Zeichenfolgen abzurufen und im Array zu speichern.
quelle