par
Ripat » 06 août 2007, 13:59
hop la j'ai trouvé ça, mais bon c'ets pas parfait d'autant que si j'ai un fichier texte de 8 mo ça va faire ramer PHP !
Ton snippet ne devrait pas être trop gourmand puisqu'il se contente de tester les deux premiers caractères du fichier.
Autre solution du même genre:
Il suffit souvent de tester le nombre de bytes du premier caractère du fichier. Mais, comme toutes les méthodes de validation UTF8, il y a des lacunes. On utilise pour ça l'option PCRE u (minuscule).
A essayer dans ton cas:
// on force sur le charset POSIX standard (raz des locales)
setlocale ( LC_CTYPE, 'C' );
// encodage ISO 8859-1
$texte = "Les Misérables";
echo preg_match('#^.{1}#u', $texte);
// encodage UTF8
$texte = utf8_encode($texte);
echo preg_match('#^.{1}#u', $texte);
Le preg_match retournera 0 dans le premier cas et 1 dans le deuxième. As-tu essayé les suggestions faites plus haut?
[quote="jac3n"]hop la j'ai trouvé ça, mais bon c'ets pas parfait d'autant que si j'ai un fichier texte de 8 mo ça va faire ramer PHP ![/quote]
Ton snippet ne devrait pas être trop gourmand puisqu'il se contente de tester les deux premiers caractères du fichier.
Autre solution du même genre:
Il suffit souvent de tester le nombre de bytes du premier caractère du fichier. Mais, comme toutes les méthodes de validation UTF8, il y a des lacunes. On utilise pour ça l'option PCRE u (minuscule).
A essayer dans ton cas:
[php]// on force sur le charset POSIX standard (raz des locales)
setlocale ( LC_CTYPE, 'C' );
// encodage ISO 8859-1
$texte = "Les Misérables";
echo preg_match('#^.{1}#u', $texte);
// encodage UTF8
$texte = utf8_encode($texte);
echo preg_match('#^.{1}#u', $texte);[/php]
Le preg_match retournera 0 dans le premier cas et 1 dans le deuxième. As-tu essayé les suggestions faites plus haut?