Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/06/2009, 08:06
Avatar de metacortex
metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
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
  1. function sin_acentos( $texto ) {
  2.   $trad = array(
  3.     'Á'  =>  'A1',
  4.     'É'  =>  'E1',
  5.     'Í'  =>  'I1',
  6.     'Ó'  =>  'O1',
  7.     'Ú'  =>  'U1',
  8.     'á'  =>  'a1',
  9.     'é'  =>  'e1',
  10.     'í'  =>  'i1',
  11.     'ó'  =>  'o1',
  12.     'ú'  =>  'u1',
  13.     'Ñ'  =>  'N1',
  14.     'ñ'  =>  'n1'
  15.   );
  16. return(strtr($texto,$trad));
  17. }

Luego hice esta otra función para reemplazar caracteres con un atajo pero no me funciona:

Código php:
Ver original
  1. function contenido($contenido) {
  2.   $contenido = preg_replace( '|\[c=(.*?)\]|', '<span class="letra-'.sin_acentos('$1').'">$1</span>' , $contenido );
  3. }

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
  1. <span class="letra-N1">Ñ</span>

¿Cómo le hago?.