php - parser - ¿Cómo obtener los parámetros de una cadena de URL?
php build url (9)
Tengo un campo de formulario HTML $_POST["url"]
tiene algunas cadenas de URL como valor. Los valores de ejemplo son:
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.
¿Cómo puedo obtener solo el parámetro de email
de estas URL / valores?
Tenga en cuenta que no obtengo estas cadenas de la barra de direcciones del navegador.
Puede obtener los parámetros de la url de esta manera:
email = $_GET["email"];
.. o así:
$url = $_SERVER["REQUEST_URI"];
$email = str_replace("/path/to/file.php?email=", "", $url);
Ejemplos de la ruta al archivo:
si la url se ve así:
https://example.com/file.php
entonces la ruta al archivo es:
/file.php (+ parameter to get. Example: ?email=)
Puede usar parse_url()
y parse_str()
para eso.
$parts = parse_url($url);
parse_str($parts[''query''], $query);
echo $query[''email''];
Si desea obtener $url
dinámicamente con PHP, eche un vistazo a esta pregunta:
Todos los parámetros después ?
se puede acceder usando la matriz $_GET
. Asi que,
echo $_GET[''email''];
extraerá los correos electrónicos de las urls.
Use $ _GET [''email''] para los parámetros en URL. Use $ _POST [''email''] para los datos publicados en el script. O use _ $ REQUEST para ambos. Además, como se mencionó, puede usar la función parse_url () que devuelve todas las partes de la URL. Use una parte llamada ''consulta'' - allí puede encontrar su parámetro de correo electrónico. Más información: parse_url()
Use los parse_url() y parse_str() . parse_url()
analizará una cadena URL en una matriz asociativa de sus partes. Como solo quiere una parte de la URL, puede usar un atajo para devolver un valor de cadena con solo la parte que desea. A continuación, parse_str()
creará variables para cada uno de los parámetros en la cadena de consulta. No me gusta contaminar el contexto actual, por lo que proporcionar un segundo parámetro coloca todas las variables en una matriz asociativa.
$url = "https://mysite.com/test/[email protected]&testin=123";
$query_str = parse_url($url, PHP_URL_QUERY);
parse_str($query_str, $query_params);
print_r($query_params);
//Output: Array ( [email] => [email protected] [testin] => 123 )
puede usar el código a continuación para obtener la dirección de correo electrónico después? en la URL
<?php
if (isset($_GET[''email''])) {
echo $_GET[''email''];
}
puedes usar filter_input () ver el manual php
Creé la función de la respuesta @Ruel . Puedes usar esto:
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;
}
}
Ejemplo:
$url = "https://example.com/test/the-page-here/1234?someurl=key&[email protected]";
echo get_valueFromStringUrl($url , "email");
Gracias a @Ruel
$uri = $_SERVER["REQUEST_URI"];
$uriArray = explode(''/'', $uri);
$page_url = $uriArray[1];
$page_url2 = $uriArray[2];
echo $page_url; <- see the value
Esto está funcionando con Grate para mí usando php