![]() |
Problemas con reemplazos en una expresión regular Tengo un problema con un reemplazo de acentos. Primero armé una pequeña función para aplicar la sustitución que necesito:
Código php:
Ver original Luego hice esta otra función para reemplazar caracteres con un atajo pero no me funciona:
Código php:
Ver original El resultado es que anula todo el preg_replace y me devuelve el atajo tal como está escrito, por ejemplo "[c=A]", cuando lo que debería aparecer es algo como esto (suponiendo que esté la letra "Ñ"):
Código html:
Ver original ¿Cómo le hago?. |
Respuesta: Problemas con reemplazos en una expresión regular mmm... la funcion a ejecutar con preg_replace() debe ser evaluada, osea... literal, pero debes usar el modificador de evaluación (e) http://www.forosdelweb.com/f18/aport...ml#post2670913 revisa el manual, o bien, usa preg_replace_callback(), para utilizar un funcion mas cómodamente... Código PHP: |
Respuesta: Problemas con reemplazos en una expresión regular Yo trate lo que tu escribiste y me devuelve [c=Á] = <span class="letra-Á">Á</span> [c=É] = <span class="letra-É">É</span> [c=Ñ] = <span class="letra-Ñ">Ñ</span> Así sucesivamente. ¿Como tu deseas que te devuelva la función? |
Respuesta: Problemas con reemplazos en una expresión regular Cita:
Cita:
:pensando: |
Respuesta: Problemas con reemplazos en una expresión regular Gracias por las respuestas. Estuve probando con preg_replace_callback y el error me pide un "argumento 2": Código HTML: Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, '<span class="letra-$1">$1</span>', to be a valid callback in /var/www/meta/functions.php on line 58Cita:
|
Respuesta: Problemas con reemplazos en una expresión regular no quiero ser ofensivo, tu lo sabes... pero el manual es muy claro Cita:
|
Respuesta: Problemas con reemplazos en una expresión regular A ver. El ejemplo que pusiste:
Código php:
Ver original ¿No será así, teniendo en cuenta la función que escribiste más arriba?:
Código php:
Ver original Eso fue lo mismo que hice, pero no sé cómo encajar el "$1" en ese 2do argumento y aplicarle la función de los acentos. Bueno, ya saldrá. Gracias por todo. |
Respuesta: Problemas con reemplazos en una expresión regular jeje, tus dos código son idénticos... mira este ejemplo completo Código PHP: |
Respuesta: Problemas con reemplazos en una expresión regular Ah carajo! Imagínate, cuándo se me iba a ocurrir esa vaina jeje. Estaba en las nebulosas. :golpeado: Entonces hay que crear una tercera función que prepare a la de los acentos para introducirla en el argumento. Hermano, ni se me había pasado por la cabeza. Gracias mil por el empujón. Mierda y lo peor es que estuvo frente a las narices todo el tiempo. Lo que no pude descifrar fue lo de esa nueva función. Cita:
|
Respuesta: Problemas con reemplazos en una expresión regular Lo logré!!! :neurotico ... Lo logré!!! :'( :'( . Home run!!! Gooollll!!! :cool: Me costó medio cojón pero al fin salió. En serio gente, qué difícil se me hizo entender cómo funcionaba. Miré docenas de ejemplos, me grabé el manual de memoria y aún no lo lograba. Esta madrugada me levanté insistiendo de nuevo y a esta hora es que vengo acertando. Dejo el código aquí para la posteridad :borracho:: La función de los reemplazos quedó exactamente igual que al principio.
Código php:
Ver original Creé una variable para la expresión regular, aunque creo que también funcionaría con datos estáticos:
Código php:
Ver original La función para reemplazar el atajo por la etiqueta HTML. Aquí metí toda la etiqueta de cabo a rabo y le apliqué la función sin_acentos() de una vez a la zona que me interesaba sustituir. Es decir, lo que aprendí es que el argumento del preg_replace_callback debe estar limpio, y todo lo que se vaya a ejecutar se ejecuta afuera:
Código php:
Ver original Finalmente el preg_replace_callback:
Código php:
Ver original Bueno así ha terminado este lío. Gracias de nuevo pateketrueke por proporcionarme la orientación básica sin llegar a darme la papita pelada :arriba:. |
| La zona horaria es GMT -6. Ahora son las 10:05. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.