Je ne comprends toujours pas comment iconv
fonctionne.
Par exemple,
$string = "Löic & René";
$output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string);
Je reçois,
Remarque: iconv () [function.iconv]: Détection d'un caractère illégal dans la chaîne d'entrée dans ...
$string = "Löic";
Ou $string = "René";
Je reçois,
Remarque: iconv() [function.iconv]:
Détection d'un caractère multi-octets incomplet dans la chaîne d'entrée dans.
Je ne reçois rien avec $string = "&";
Il y a deux ensembles de sorties différentes dont j'ai besoin de les stocker dans les deux colonnes différentes à l'intérieur du tableau de ma base de données,
J'ai besoin de convertir Löic & René
En Loic & Rene
À des fins d'url propre.
Je dois les conserver tels quels - Löic & René
En tant que Löic & René
, Puis les convertir uniquement avec htmlentities($string, ENT_QUOTES);
lors de leur affichage sur ma page html.
J'ai essayé avec certaines des suggestions dans php.net ci-dessous, mais ne fonctionne toujours pas,
J'ai eu une situation où j'avais besoin de certains caractères translittérés, mais les autres ignorés (pour les diacritiques étranges comme ayn ou hamza). L'ajout de // TRANSLIT // IGNORE semblait faire l'affaire pour moi. Il translitère tout ce qui peut être translittéré, mais jette ensuite des choses qui ne peuvent pas l'être.
Donc:
$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!
et un autre,
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
Comment puis-je réellement les résoudre?
Merci.
MODIFIER:
Ceci est le fichier source dont je teste le code,
<!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>
Et avez-vous enregistré votre fichier source au format UTF-8? Si ce n'est pas le cas (et je suppose que vous ne l'avez pas fait, car cela produira l'erreur "caractère multioctet incomplet"), essayez d'abord.
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', utf8_encode($s));