2010-11-18 27 views
20

¿Cómo acepto GET pasado o POST valores mayúsculas y minúsculas sin distinción de mayúsculas y minúsculas?PHP: parámetros insensibles a las mayúsculas

Como sample.php?OrderBy=asc seguirá siendo el mismo que sample.php?orderby=asc o sample.php?ORDERBY=asc

¿Existe un medio para lograr lo anterior de manera eficiente?

+0

No estoy seguro de una buena solución, pero me encontré con un problema como ese en el que la contraseña hash se ha reducido y no se ha podido usar; así que ten cuidado, y sugeriría que veas por qué sucede esto en primer lugar; por lo general, al convertir de HTTP a HTTPS (o viceversa), la URL obtiene un formato inferior. – BeemerGuy

+2

¿Cuál es el motivo para cambiar el estuche? – zerkms

+2

bueno, estoy trabajando en una API donde el sistema sirve previamente a otros clientes API que usan mayúsculas y recientemente hicimos algunos cambios a la API, incluida la decisión de cumplir con los parámetros de la capa inferior. entonces, para mantener la compatibilidad con los usuarios anteriores de la API, me enfrento a este tipo de problema. – VeeBee

Respuesta

42

Puede usar array_change_key_case() para crear una copia de $_GET con todas las mayúsculas o minúsculas.

$_GET_lower = array_change_key_case($_GET, CASE_LOWER); 
$orderby = isset($_GET_lower['orderby']) ? $_GET_lower['orderby'] : 'asc'; 
echo $orderby; 

(digo "crear una copia", simplemente porque no me gustan los contaminantes superglobales originales, pero es su opción para sobrescribir ellos si lo desea.)

Por lo demás, sería Sería mejor si solo se ajustara a las mayúsculas y minúsculas ya que podría ser más fácil tanto para el motor de búsqueda como para los ojos humanos, así como también más fácil para su código ... EDITAR: OK, basado en su comentario puedo ver por qué Quisiera hacer algo como esto.

+0

¿Cuál es el motivo para cambiar el estuche? – zerkms

+0

Al iniciar el navegador web predeterminado con un comando de Shell de VBA, la URL ha cambiado misteriosamente a minúsculas si el navegador es Windows 10 Edge. Pero no en todas las computadoras con Windows 10, solo algunas. – user3142056

Cuestiones relacionadas