Tengo un campo de formulario HTML que $_POST["url"]
tiene algunas cadenas 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 email
parámetro de estas URL / valores?
Tenga en cuenta que no obtengo estas cadenas de la barra de direcciones del navegador.
php
url-parsing
Asim Zaidi
fuente
fuente
/(email=\w\@\w\.\w)/
o técnicas de emparejamiento más avanzadas. Solo te estoy dando la idea. Verpreg_match
función: php.net/manual/en/function.preg-match.phpRespuestas:
Puedes usar el
parse_url()
yparse_str()
para eso.Si desea obtener
$url
dinámicamente con PHP, eche un vistazo a esta pregunta:Obtenga la URL completa en PHP
fuente
?
Se puede acceder a todos los parámetros después usando$_GET
array. Entonces,extraerá los correos electrónicos de las URL.
fuente
https://[email protected]
$email = $_GET['email']; $email === '[email protected]';
Utilice los métodos parse_url () y parse_str () .
parse_url()
analizará una cadena de URL en una matriz asociativa de sus partes. Dado que solo desea una sola parte de la URL, puede usar un acceso directo 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.fuente
Usar
$_GET['email']
para parámetros en URL. Úselo$_POST['email']
para los datos publicados en el script. O usar_$REQUEST
para ambos. Además, como se mencionó, puede usar laparse_url()
función 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.phpfuente
address bar
. Estas URL son solo cadenasIN
del código.¿Puedes usar el siguiente código para obtener la dirección de correo electrónico después? en la URL
fuente
Como se mencionó en otra respuesta, la mejor solución es usar
parse_url()
Necesitas usar la combinación de
parse_url()
yparse_str()
.La
parse_url()
URL de análisis y devuelve sus componentes que puede obtener la cadena de consulta utilizando laquery
clave. Entonces deberías usarparse_str()
esa cadena de consulta de análisis y devolver los valores a la variable.También puedes hacer este trabajo usando expresiones regulares .
preg_match()
Puede usar
preg_match()
para obtener un valor específico de la cadena de consulta de la URL.preg_replace()
¡También puede usar
preg_replace()
para hacer este trabajo en una línea!fuente
Creé la función de @Ruel answer . Puedes usar esto:
Ejemplo:
Gracias a @Ruel
fuente
Esto funciona muy bien para mí usando php
fuente
fuente
Todavía no se menciona una respuesta mucho más segura que me sorprenda:
filter_input
Entonces, en el caso de la pregunta, puede usar esto para obtener un valor de correo electrónico de los parámetros de obtención de URL:
$email = filter_input( INPUT_GET, 'email', FILTER_SANITIZE_EMAIL );
Para otros tipos de variables, desearía elegir un filtro diferente / apropiado como
FILTER_SANITIZE_STRING
.Supongo que esta respuesta hace más que exactamente lo que pide la pregunta: obtener los datos sin procesar del parámetro URL. Pero este es un acceso directo de una línea que es el mismo resultado que este:
También podría adquirir el hábito de tomar variables de esta manera.
fuente
En Laravel, yo uso:
fuente
Función dinámica que analiza la url de cadena y obtiene el valor del parámetro de consulta pasado en la URL
Llame a la función para obtener resultados
fuente
Para obtener los parámetros de la cadena URL, utilicé la siguiente función.
Si hay muchas cadenas de URL, puede usar el bucle para obtener el parámetro 'correo electrónico' de todas esas cadenas de URL y almacenarlas en una matriz.
fuente