5

Estoy desarrollando un CMS para un cliente y necesita editar cosas y usar caracteres especiales como ç y ®. Sin embargo, no quiero que tenga que ingresar los códigos de caracteres como ®. ¿Alguien sabe una buena manera de convertir automáticamente esos caracteres usando PHP?Convierta caracteres especiales en códigos de caracteres HTML

+4

Err. Solo asegúrese de que la codificación de caracteres sea consistente (es decir, solo use UTF-8 en todo), y no necesita convertir esos caracteres para que se vean perfectamente. – Quentin

Respuesta

14

Puede utilizar htmlentities() para hacer eso.

php -r 'echo htmlentities("®ç", ENT_COMPAT, "UTF-8"), "\n";' 
®ç 

Para activar entidades volver al texto legible, utilice html_entity_decode():

php -r 'echo html_entity_decode("®ç", ENT_COMPAT, "UTF-8"), "\n";' 
®ç 

Si no se está usando Unicode, omite el nombre del juego de caracteres o hacerle el juego de caracteres correcto.

+1

+1 para especificar la codificación. –

+0

Fantástica respuesta que resuelve un problema con el que he luchado durante algunos años. Vale la pena señalar que algunas de las otras respuestas que mencionan copiar pegar o codificar con fuerza la versión ALT KeyCode del símbolo no funcionarán cuando mueva su código del sistema operativo al sistema operativo. –

2

utilizar Unicode, y le muestran cómo copiar & pasta de mapa de caracteres :-)

+4

-1. ¿Qué tipo de respuesta es esta? –

+3

@Alin No es * una * mala respuesta, diría - si el cliente ya está usando caracteres como ç y ®, entonces usar UTF-8, por ejemplo, para la entrada, almacenamiento y salida del CMS permitirá que elimine la necesidad de las entidades HTML. Al igual que ocurre en esta página web, por ejemplo, donde escribí "®", lo envié al sitio y el sitio lo muestra como "®": busque el código fuente de esta página y ganó No veo una entidad HTML allí, solo el personaje real y real. –

+0

@MattGibson Un problema es si usa el control de código fuente y mueve el código hacia atrás y hacia adelante entre los sistemas operativos basados ​​en Unix y los sistemas operativos de Windows. Aprendí por las malas que los códigos de tecla ALT no funcionan de la manera que usted quiere en todos los sistemas operativos. –

3

Lo más fácil sería utilizar UTF-8 desde el comienzo.
Pero también se puede convertir automáticamente los caracteres con DOM:

$dom = new DOMDocument; 
$dom->appendChild(new DOMText('© oui içi » ')); 
echo $dom->saveHtml(); 

salidas

© oui içi » 
0

Eche un vistazo a la función htmlentities. Esto toma una cadena y convierte caracteres componentes en sus entidades HTML. Puede especificar que la codificación de la cadena sea coherente con la entrada del usuario.

+0

¡Gracias! Funciona :) –