2012-07-14 41 views
112

Tengo un campo de formulario HTML $_POST["url"] que tiene algunas cadenas de URL como valor. Ejemplo valores son:¿Cómo obtener los parámetros de una cadena URL?

 
https://example.com/test/[email protected] 
https://example.com/test/[email protected] 
https://example.com/test/[email protected] 
https://example.com/test/[email protected]&testin=123 
https://example.com/test/the-page-here/[email protected] 

etc.

¿Cómo puedo obtener sólo el parámetro email de estas direcciones URL/valores?

Tenga en cuenta que no obtengo estas cadenas de la barra de direcciones del navegador.

+0

Estoy un poco confundido, por favor elabore el Q ... –

+0

Mire la edición – Autolycus

+0

¿Está diciendo/pidiendo que las URL sean tratadas como cadenas? – hjpotter92

Respuesta

252

Puede usar parse_url() y parse_str() para eso.

$parts = parse_url($url); 
parse_str($parts['query'], $query); 
echo $query['email']; 

Si desea obtener el $url dinámicamente con PHP, echar un vistazo a esta pregunta:

Get the full URL in PHP

+2

Me gusta esto thx. – mghhgm

+0

esto es muy mantabs en mi opinión –

+1

mantabs? ¿Es eso un error tipográfico o simplemente una prueba más de lo poco moderno que soy? :) – rinogo

68

Se puede acceder a todos los parámetros después de ? utilizando la matriz $_GET. Por lo tanto,

echo $_GET['email']; 

extraerá los correos electrónicos de las URL.

+7

no está en la url ... es la url en el código – Autolycus

+17

This isn ' la respuesta a la pregunta, pero esta es la respuesta que estaba buscando cuando le pregunté a Google por la pregunta, entonces +1 por responder correctamente a Google. – BillyNair

8

Uso $ _GET [ 'email'] para los parámetros en la URL. Use $ _POST ['email'] para los datos publicados en el script. O use _ $ PETICIÓN 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: http://php.net/manual/en/function.parse-url.php

+2

OP dijo que no está recibiendo URL de 'barra de direcciones'. Estas URL son solo cadenas 'EN 'el código. – DavChana

26

Utilice los métodos 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) 
4

se puede utilizar a continuación el código para obtener la dirección de correo electrónico después? en la URL

<?php 
 
if (isset($_GET['email'])) { 
 
    echo $_GET['email']; 
 
}

+1

El OP solicitó la extracción de variables de una cadena, no la URL en la página actual. parse_url() es la respuesta correcta suponiendo que la cadena está formateada correctamente. – Bloafer

0
$uri = $_SERVER["REQUEST_URI"]; 
$uriArray = explode('/', $uri); 
$page_url = $uriArray[1]; 
$page_url2 = $uriArray[2]; 
echo $page_url; <- see the value 

Esto es Grate trabajando para mí utilizando php

2

creé función from @Ruel answer. Puede utilizar esta:

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

-4

puede utilizar filter_input() ver manual de php

+2

Esta es una respuesta terrible. ¿Te importaría agregar un ejemplo? – Antti29

0

Usted puede obtener los parámetros de la URL así:

email = $_GET["email"]; 

.. o como esto:

$url = $_SERVER["REQUEST_URI"]; 
$email = str_replace("/path/to/file.php?email=", "", $url); 

ejemplos de la ruta al archivo:

si el URL tiene el siguiente aspecto:

https://example.com/file.php 

entonces la ruta al archivo es:

/file.php (+ parameter to get. Example: ?email=) 
Cuestiones relacionadas