
Asim Zaidi
Ich habe ein HTML-Formularfeld $_POST["url"]
mit einigen URL-Strings als Wert.
Beispielwerte sind:
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
usw.
Wie bekomme ich nur die email
Parameter aus diesen URLs/Werten?
Bitte beachten Sie, dass ich diese Zeichenfolgen nicht aus der Adressleiste des Browsers erhalte.

Ruel
Du kannst den … benutzen parse_url()
und parse_str()
dafür.
$parts = parse_url($url);
parse_str($parts['query'], $query);
echo $query['email'];
Wenn Sie die bekommen möchten $url
dynamisch mit PHP, werfen Sie einen Blick auf diese Frage:
Holen Sie sich die vollständige URL in PHP

hjpotter92
Alle Parameter danach ?
kann über abgerufen werden $_GET
Reihe. Damit,
echo $_GET['email'];
extrahiert die E-Mails aus URLs.
Verwenden Sie die parse_url() und parse_str() Methoden. parse_url()
zerlegt einen URL-String 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 nur mit dem gewünschten Teil zurückzugeben. Nächste, parse_str()
erstellt Variablen für jeden der Parameter in der Abfragezeichenfolge. Ich mag es nicht, den aktuellen Kontext zu verschmutzen, also fügt ein zweiter Parameter alle Variablen in ein assoziatives Array ein.
$url = "https://mysite.com/test/1234?email=xyz4@test.com&testin=123";
$query_str = parse_url($url, PHP_URL_QUERY);
parse_str($query_str, $query_params);
print_r($query_params);
//Output: Array ( [email] => xyz4@test.com [testin] => 123 )

Mohammed
Wie in einer anderen Antwort erwähnt, ist die beste Lösung die Verwendung parse_url()
.
Sie müssen eine Kombination aus verwenden parse_url()
und parse_str()
.
Die parse_url()
analysiert die URL und gibt ihre Komponenten zurück, mit denen Sie die Abfragezeichenfolge abrufen können query
Schlüssel. Dann sollten Sie verwenden parse_str()
die die Abfragezeichenfolge analysiert und Werte in eine Variable zurückgibt.
$url = "https://example.com/test/1234?basic=2&email=xyz2@test.com";
parse_str(parse_url($url)['query'], $params);
echo $params['email']; // xyz2@test.com
Sie können diese Arbeit auch mit erledigen regulärer Ausdruck: preg_match()
Sie können verwenden preg_match()
um einen bestimmten Wert der Abfragezeichenfolge von einer URL zu erhalten.
preg_match("/&?email=([^&]+)/", $url, $matches);
echo $matches[1]; // xyz2@test.com
Auch Sie können verwenden preg_replace()
um diese Arbeit zu erledigen eine Linie!
$email = preg_replace("/^https?:\/\/.*\?.*email=([^&]+).*$/", "$1", $url);
// xyz2@test.com

Paul Denisewitsch
Verwenden $_GET['email']
für Parameter in URL. Verwenden $_POST['email']
für gepostete Daten zum Skript. Oder verwenden _$REQUEST
für beide. Auch, wie erwähnt, können Sie verwenden parse_url()
Funktion, die alle Teile der URL zurückgibt. Verwenden Sie einen Teil namens “Abfrage” – dort finden Sie Ihren E-Mail-Parameter. Mehr Info: http://php.net/manual/en/function.parse-url.php

Peter Mortensen
Sie können den folgenden Code verwenden, um die E-Mail-Adresse danach zu erhalten ?
in der URL:
<?php
if (isset($_GET['email'])) {
echo $_GET['email'];
}

Peter Mortensen
Ich habe eine Funktion aus Ruels Antwort erstellt.
Sie können dies verwenden:
function get_valueFromStringUrl($url , $parameter_name)
{
$parts = parse_url($url);
if(isset($parts['query']))
{
parse_str($parts['query'], $query);
if(isset($query[$parameter_name]))
{
return $query[$parameter_name];
}
else
{
return null;
}
}
else
{
return null;
}
}
Beispiel:
$url = "https://example.com/test/the-page-here/1234?someurl=key&email=xyz5@test.com";
echo get_valueFromStringUrl($url , "email");
Danke an @Ruel.
9891300cookie-checkWie kann ich Parameter aus einer URL-Zeichenfolge erhalten?yes
Ich bin etwas verwirrt, bitte erläutern Sie die Frage …
– Dexter Huinda
14. Juli 2012 um 3:30 Uhr
Wollen Sie sagen/bitten, dass die URLs als Zeichenfolgen behandelt werden?
– hjpotter92
14. Juli 2012 um 3:39 Uhr
Wenn Sie den E-Mail-Teil von Zeichenfolgen “abgleichen” möchten, wie in Ihren Beispielen, verwenden Sie reguläre Ausdrücke. Könnte so einfach sein
/(email=\w\@\w\.\w)/
oder fortgeschrittenere Matching-Techniken. Ich gebe Ihnen nur die Idee. Sehenpreg_match
Funktion: php.net/manual/en/function.preg-match.php– Dexter Huinda
14. Juli 2012 um 3:43 Uhr
mögliches Duplikat von Wie extrahiere ich Abfrageparameter aus einer URL-Zeichenfolge in PHP?
– Immer_ein_Lerner
8. Juli 2015 um 5:11 Uhr
Mögliches Duplikat der URL-Abfragezeichenfolge abrufen
– jww
21. Oktober 2018 um 6:08 Uhr