with texto strip_tags remove limpiar from especiales eliminar convertir caracteres allow all php special-characters iconv

texto - PHP: Tratar personajes especiales con iconv



remove html tags from string (2)

¿Y guardaste tu archivo fuente en codificación UTF-8? Si no (y supongo que no, ya que eso producirá el error de "carácter multibyte incompleto"), inténtelo primero.

Todavía no entiendo cómo funciona iconv .

Por ejemplo,

$string = "Löic & René"; $output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);

Yo obtengo,

Aviso: iconv () [function.iconv]: detectó un carácter no válido en la cadena de entrada en ...

$string = "Löic"; o $string = "René";

Yo obtengo,

Aviso: iconv() [function.iconv]: detectó un carácter multibyte incompleto en la cadena de entrada en.

No consigo nada con $string = "&";

Hay dos conjuntos de salidas diferentes que necesito almacenarlas en las dos columnas diferentes dentro de la tabla de mi base de datos,

  1. Necesito convertir Löic & René a Loic & Rene para propósitos de url limpio.

  2. Necesito mantenerlos como están: Löic & René como Löic & René luego los convierten solo con htmlentities($string, ENT_QUOTES); al mostrarlos en mi página html.

Intenté con algunas de las sugerencias en php.net continuación, pero aún no funciona,

Tuve una situación en la que necesitaba algunos caracteres transliterados, pero los otros se ignoraron (por diacríticos extraños como ayn o hamza). Añadir // TRANSLIT // IGNORE parecía hacer el truco por mí. Transcribe todo lo que se puede transliterar, pero luego arroja cosas que no pueden ser.

Asi que:

$string = "ʿABBĀSĀBĀD"; echo iconv(''UTF-8'', ''ISO-8859-1//TRANSLIT'', $string); // output: [nothing, and you get a notice] echo iconv(''UTF-8'', ''ISO-8859-1//IGNORE'', $string); // output: ABBSBD echo iconv(''UTF-8'', ''ISO-8859-1//TRANSLIT//IGNORE'', $string); // output: ABBASABAD // Yay! That''s what I wanted!

y otro,

Andries Seutens 07-Nov-2009 07:38 When doing transliteration, you have to make sure that your LC_COLLATE is properly set, otherwise the default POSIX will be used. To transform "rené" into "rene" we could use the following code snippet: setlocale(LC_CTYPE, ''nl_BE.utf8''); $string = ''rené''; $string = iconv(''UTF-8'', ''ASCII//TRANSLIT'', $string); echo $string; // outputs rene

¿Cómo puedo realmente resolverlos?

Gracias.

EDITAR:

Este es el archivo de origen que pruebo el código,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" class="no-js"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <?php $string = "Löic & René"; $output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string); ?> </html>


$clean = iconv(''UTF-8'', ''ASCII//TRANSLIT'', utf8_encode($s));