Foros del Web » Programando para Internet » PHP »

PHP, XHTML y la función htmlentities

Estas en el tema de PHP, XHTML y la función htmlentities en el foro de PHP en Foros del Web. Hola amig@s. Estoy tratando de validar el xhtml de mi página; los contenidos vienen de un backoffice y no puedo controlar lo que me introducen ...
  #1 (permalink)  
Antiguo 15/03/2007, 17:16
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
PHP, XHTML y la función htmlentities

Hola amig@s.

Estoy tratando de validar el xhtml de mi página; los contenidos vienen de un backoffice y no puedo controlar lo que me introducen los usuarios, tengo usuarios con nivel de html que introducen etiquetas html, pero otros no.

Tratando de validar el xhtml y en concreto los carácteres no válidos (como acentos, comillas...), vi la función htmlentities, que transforma estos carácteres a un código apropiado en html... pero también me cambia las etiquetas que habían metido en html los usuarios más avanzados mostrando por ejemplo <a href="linkquesea">texto</a>.

Vamos que o me quedo sin validar el xhtml o me quedo si ver las etiquetas html.

¿Alguien me podría dar alguna solución para conseguir ambas cosas? De cara al futuro he pensado en meter algún editor de texto para web tipo FCKeditor... pero esto no me solucionará los que ya tengo introducidos.

Gracias de antemano por alguna ayuda.
  #2 (permalink)  
Antiguo 15/03/2007, 17:47
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: PHP, XHTML y la función htmlentities

XHTML no tiene problemas con comillas ni acentos, siempre que uses la codificación de caracteres correcta, y la misma en todas las etapas del sistema.
Creo que no podrás solo poner las entidades de ciertos caracteres, pero lo que sí podés hacer (si no lográs ajustar la codificación, que creo que es lo que deberías intentar primero), es algo como:

1.- preparar un vector de caracteres especiales:
$orig = array('á', 'é'.....);

2.- preparar otro vector con los valores que sustituyen a los anteriores:
$nuevo = array('&aacute;', '&eacute'....);

3.- usar str_replace, con $orig como cadena a buscar y $nuevo como cadena sustituta, sobre la cadena original.


¡ojo! para que te funcione correctamente, las codificaciones de caracteres tienen que coincidir entre php y el origen de datos.


Saludos.
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:49.