Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Arrays y preg_match

Estas en el tema de Arrays y preg_match en el foro de PHP en Foros del Web. Un saludo a los que me leen y a los que no: Estoy realizando un detector de idiomas que trabaja en lenguajes de 2 y ...
  #1 (permalink)  
Antiguo 11/07/2015, 07:40
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Pregunta Arrays y preg_match

Un saludo a los que me leen y a los que no:

Estoy realizando un detector de idiomas que trabaja en lenguajes de 2 y 4 letras, ej. es y es-ES. Por lo que tengo:
Hay mas lineas pero estoy trabado en esta parte en la que los valores de array $languages deban contener 2 letras en vez de 4, cosa que logro. El problema esta al usar preg_match() para buscar coincidencia entre $blang y cada lenguaje del array $languages, lo que al almacenar resultado en $language lo hace en array() y lo que quiero es que me guarde el unico valor de si es "en", "es" o "zh" el cual esta reflejado en $blang.
[PHP]
$languages = array ('en-US', 'es-ES', 'zh-CN');
$blang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5); // Actualmente "es,en".
// (...)
$blang = substr($blang, 0, 2);
// (...)
foreach ($languages as $lang)
{
$language = substr($lang, 0, 2);

preg_match("/\b".$blang."\b/i", $lang, $language);

$language = substr($lang, 0, 2);
}
[PHP]

En si lo que quiero es saber que otra opcion puedo usar para que $blang sea comparada dentro de el array $languages y que ese especifico valor que coincida, ej. "es" (Ya que es un codigo de lenguaje de 2 letras) sea almacenado en $language y no los valores "eneszh", como me esta haciendo.

Alguna idea en vez de preg_match usar otra cosa o quizas emplearlo de otra manera sin alterar tanto el codigo?

Última edición por eccorposse; 11/07/2015 a las 08:06 Razón: Errores al plantear por falta de informacion

Etiquetas: arrays
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.