Foros del Web » Programando para Internet » PHP »

problema con tildes en expresiones regulares

Estas en el tema de problema con tildes en expresiones regulares en el foro de PHP en Foros del Web. Hola a todos. He constatado que cada vez que hay algún acento en una letra dentro de una expresión regular, me hace que falle el ...
  #1 (permalink)  
Antiguo 23/12/2011, 11:47
 
Fecha de Ingreso: febrero-2011
Mensajes: 78
Antigüedad: 13 años, 1 mes
Puntos: 0
problema con tildes en expresiones regulares

Hola a todos. He constatado que cada vez que hay algún acento en una letra dentro de una expresión regular, me hace que falle el preg_match. Ni siquiera lo consigo escapando las letras con tildes. Alguien tiene una solución??

un ejemplo que no funcionaría sería este:
Código PHP:
preg_match("#<li><strong>Dónde está:</strong>(.*?)</a></li>"#,$respuesta,$where); 
  #2 (permalink)  
Antiguo 23/12/2011, 14:12
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 6 meses
Puntos: 188
Respuesta: problema con tildes en expresiones regulares

Hola amigo que tal,

veras sucede lo siguiente:
_______________________________

1.- Que sucede cuando imprimes en el navegador una cadena letras acentuadas?

Código PHP:
Ver original
  1. echo "áéíóú";

Que es lo que puedes ver en el navegador? Son las mismas vocales acentuadas que has colocado en el echo?

Entonces tu expresión regular esta intentando comparar una cadena de texto cuya entrada es de vocales acentuadas pero su salida es de otros símbolos, esta es una de las 2 razones por la que tu expresión regular no funciona.

Solución: Podrías utilizar utf8_decode antes de comparar con preg_match.
---------------------------------------

2.- La otra razón, es en la expresión regular. Escapar las vocales acentuadas no es del todo bueno hay otra solución un poco más copada.

Utiliza la expresión hexadecimal de las vocales acentuadas.

á: \xe1
é: \xe9
í: \xed
ó: \xf3
ú: \xfa

Verifícalas en alguna tabla puede que ya no me acuerde bien y me haya equivocado.


En fin.

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: expresiones, regulares, tildes
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 13:57.