Los usuarios pueden ingresar URL usando un formulario HTML en mi sitio web, por lo que pueden escribir algo como esto: http://www.example.com?test=123&random=abc, puede ser cualquier cosa. Necesito extraer el valor de un cierto parámetro de consulta, en este caso 'prueba' (el valor 123). ¿Hay alguna forma de hacer esto?¿Cómo extraigo los parámetros de consulta de una cadena URL en PHP?
Respuesta
Puede utilizar parse_url
y parse_str
así:
$query = parse_url('http://www.example.com?test=123&random=abc', PHP_URL_QUERY);
parse_str($query, $params);
$test = $params['test'];
parse_url
permite dividir una dirección URL en diferentes partes (esquema, host, ruta, consulta, etc.); aquí lo usamos para obtener solo la consulta (test=123&random=abc
). Entonces podemos analizar la consulta con parse_str
.
Parece que parse_url arroja un error de PHP cuando usa ciertas URL, vea este comentario en php.net: http://www.php.net/manual/en/function.parse-url.php#96433 –
Sí, parece que no funciona en las URL sin ' componente del host' Esto funcionará con URL válidas similares a HTTP. – arnaud576875
Entonces, ¿hay alguna otra manera de hacer esto? –
Necesitaba comprobar una URL que era relativa para nuestro sistema, así que no pude usar parse_str. Para cualquier persona que lo necesite:
$urlParts = null;
preg_match_all("~[\?&]([^&]+)=([^&]+)~", $url, $urlParts);
solo por curiosidad, pero ¿cómo es que su sistema no es compatible con una función PHP nativa? – Vallentin
@Vallentin - 'parse_str()' se introdujo en PHP 4 ... tal vez (pero es mucho improbabile) que tenía una versión anterior de PHP –
el nombre de host es opcional, pero se requiere al menos el signo de interrogación en el inicio de la cadena de parámetros:
$inputString = '?test=123&random=abc&usersList[]=1&usersList[]=2' ;
parse_str (parse_url ($inputString , PHP_URL_QUERY) , $params);
print_r ($params);
- 1. ¿Cómo extraigo el dominio de una URL?
- 2. ¿Cómo leer los parámetros de cadena de consulta de una URL sin procesar de ASP.NET?
- 3. Django y parámetros de cadena de consulta
- 4. ¿Obtener los parámetros de cadena de URL?
- 5. ¿Cuál es la forma correcta de separar los parámetros de cadena de consulta en una url?
- 6. ¿Cómo obtener los parámetros de una cadena URL?
- 7. matraz-caché memoize parámetros de cadena de consulta URL también
- 8. Reescritura de URL heredada con parámetros de cadena de consulta
- 9. consulta de parámetros de una URL que inturn tiene cierta URL con parámetros de consulta
- 10. Obtener los parámetros url de una cadena en .NET
- 11. Parámetros de consulta Tornado URL
- 12. parámetros Validar URL en php
- 13. Como lee los parámetros de la cadena de consulta HTTP
- 14. ¿Cómo veo los parámetros en una consulta?
- 15. ¿Cómo convierto una cadena de consulta PHP en una URL basada en barras?
- 16. Cómo pasar% en una cadena de consulta URL?
- 17. Reescribiendo URL con los parámetros de cadena de consulta seleccionados en .htaccess
- 18. Significado de los parámetros en una consulta de Google?
- 19. extraer cadena de consulta de una cadena de URL
- 20. ¿Cómo obtener los parámetros de URL en Rails?
- 21. ¿Cómo agregar parámetros personalizados a una cadena de consulta URL con Python?
- 22. ¿Cómo codificar URL correctamente una cadena en PHP?
- 23. Agregar los parámetros de la cadena de consulta a link_to
- 24. ¿Cómo elimino una consulta de una url?
- 25. Cambiar sola consulta URL valor de cadena
- 26. parámetros de acción a aparecer en la cadena de consulta URL en lugar de
- 27. consulta de nombres de los parámetros de cadena para SEO
- 28. Codificación de parámetros de consulta de URL en Java
- 29. ¿Cómo enruto una URL con una cadena de consulta en ASP.NET MVC?
- 30. Cake PHP redirigir a los parámetros de url
posible duplicado de [la expresión regular para analizar la cadena de consulta] (http://stackoverflow.com/questions/4499538/regular-expression-to-parse-query-string) – Gordon
De hecho, un duplicado, sin embargo, la solución parse_url conduce a un nuevo problema, mira mi comentario a user576875 a continuación. –
puedes extraer la cadena comenzando desde '?' Con 'strstr' o' explotar 'algo y luego pasarla a 'parse_str' – Gordon