Foros del Web » Programando para Internet » PHP »

Ayuda con expresión regular

Estas en el tema de Ayuda con expresión regular en el foro de PHP en Foros del Web. Hola gente, qué tal? Bueno, estoy teniendo un problema con un patrón al que no le encuentro la vuelta . Me explico un poco mejor: ...
  #1 (permalink)  
Antiguo 25/08/2010, 07:22
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Ayuda con expresión regular

Hola gente, qué tal?

Bueno, estoy teniendo un problema con un patrón al que no le encuentro la vuelta . Me explico un poco mejor:

Supongamos que tenemos el siguiente string:

Código PHP:
$string 'fáo = "á está acá";' 
Y queremos reemplazar los acentos del tipo "á" por el caracter html correspondiente, pero solo de los "á" que están encerrados entre comillas dobles. Se entiende? O sea, el resultado esperado es el siguiente:

Código PHP:
$string 'fáo = "á está acá";' 
Estuve tratando y tratando y lo más cerca que estuve fue esto:

Código PHP:
<?php
$cadena 
'fáo = "á está acá";';
echo 
$cadena "\n<br /><br />\n"// Cadena sin reemplazos
$patron '/(\".*?)(á)(.*?\")/is';
$sustitucion '${1}&aacute;${3}';
echo 
preg_replace($patron$sustitucion$cadena); // Cadena reemplazada
?>
Pero el resultado que esto produce es (en código html)

Código HTML:
fáo = "á está acá";
<br /><br />
fáo = "&aacute; está acá";
O sea, no me reemplaza todos los "á" sino que sólo el primero.

Alguien tiene idea de qué es lo que le falta o qué está mal en el patrón? Yo me estoy volviendo loco sinceramente

Muchas gracias!
__________________
HV Studio
Diseño y desarrollo web
  #2 (permalink)  
Antiguo 25/08/2010, 07:29
 
Fecha de Ingreso: diciembre-2008
Mensajes: 805
Antigüedad: 15 años, 4 meses
Puntos: 20
Respuesta: Ayuda con expresión regular

para reemplazar ocupa esto:
str_replace

ejemplo:
str_replace("á","&aacute",$cadena);
  #3 (permalink)  
Antiguo 25/08/2010, 07:35
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Ayuda con expresión regular

Cita:
Iniciado por sergiop21 Ver Mensaje
para reemplazar ocupa esto:
str_replace

ejemplo:
str_replace("á","&aacute",$cadena);
Tal vez no me haya explicado bien... Necesito que me reemplace sólo lo que está entre comillas dobles.
__________________
HV Studio
Diseño y desarrollo web
  #4 (permalink)  
Antiguo 25/08/2010, 07:35
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayuda con expresión regular

Código PHP:
$string utf8_decode('foáo = "holááááooo don";');
$string preg_replace_callback('/(["\'])(.*?)\1/'create_function('$e'"return \$e[1].htmlentities(\$e[2]).\$e[1];"), $string);
echo 
$string

:P
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 25/08/2010, 07:47
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Ayuda con expresión regular

Cita:
Iniciado por Hidek1 Ver Mensaje
Código PHP:
$string utf8_decode('foáo = "holááááooo don";');
$string preg_replace_callback('/(["\'])(.*?)\1/'create_function('$e'"return \$e[1].htmlentities(\$e[2]).\$e[1];"), $string);
echo 
$string
:P
Emmmmmmmmm, NO! xD
No, en serio, ya me lo habías mostrado antes pero cuando la codificación no es UTF-8 aparecen simbolos extraños

Estoy empleando una clase, y ya hice un método que detecta la codificación, debería luego hacer un remplazo u otro según la codificación detectada. Esta me serviría en el caso de ser UTF-8 =)
__________________
HV Studio
Diseño y desarrollo web

Etiquetas: regular
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 10:58.