Quelle est la différence entre la fonction iconv() et mb_convert_encoding() en PHP?
Quelle est la différence entre iconv()
et mb_convert_encoding()
en PHP? N'est-on effectuer une meilleure, plus rapide, etc. ( eg. avec certains encodages )? Dans quelles situations serait un être privilégié par rapport à l'autre?
Voici ce que je pense que je sais déjà:
iconv()
- inclus avec la plupart des installations de PHP.
- lorsque les caractères qui ne peuvent pas être mappé sur le nouveau jeu de caractères sont trouvés, vous pouvez spécifier s'ils sont convertis à un "similaires" caractère, ou ignoré.
mb_convert_encoding()
- nécessite généralement l'installation de php-mbstring extension.
- est capable de gérer
HTML-ENTITIES
, de la conversion et de web des codes hex.
Existe-il d'autres différences?
- Connexes: stackoverflow.com/questions/4050754/iconv-or-mbstring
- On ne peut pas dire si et lorsque l'un quelconque de ces fonctions présentent un problème à vous parce que vous n'avez pas d'action dans lequel les problèmes concrets que vous exécutez. Comme avec n'importe quel type de fonction, il ne le fait un certain travail. Afin de toujours rencontrer des problèmes si vous utilisez la fonction incorrecte pour le travail.
- C'est un sujet & utile. L'OP n'a pas de poser des questions sur sa situation spécifique et ne parviennent pas à fournir des détails pour déterminer la fonction préférée dans sa situation; au contraire, il a demandé des informations sur la différence entre les deux fonctions PHP qui apparaissent pour accomplir la même fonction. Ce qui, bien sûr, pose la question: pourquoi font-ils, les deux existent, et dans quelles situations on aurait la préférence sur les autres? Ce qui est spécifique à portée, et une large applicabilité (toute personne de faire des conversions de caractères en PHP voulez savoir ce). La Question ne doit pas avoir été fermé comme "non constructif."
var_dump(similar_text('iconv','mb_convert_encoding'))
dit4
. Donc la réponse est4
.- Je suis d'accord avec Josh... j'arrive ici via une recherche Google, à la recherche d'exactement les mêmes informations que pour être déçu que la question a été rejetée. Je ne vois rien de mal avec elle.
- Qu'entendez-vous par "la question a été rejeté"?
- ressemble à la "fermés que pas constructif" drapeau a été retiré de la question depuis.
Vous devez vous connecter pour publier un commentaire.
iconv()
est juste un wrapper autour de laiconv()
fonction dans le système de la bibliothèque C où PHP est en cours d'exécution (à moins que PHP est construit avec GNU iconv, auquel cas GNU iconv est utilisé). Donc, les performances et les caractéristiques deiconv()
dépendent de l'endroit où vous utilisez PHP et comment il est construit.La mise en œuvre de
mb_convert_encoding()
, d'autre part, est inclus dans le PHP (module) de la source. Il comprend une bibliothèque appelée libmbfl qui s'occupe de la conversion réelle. Ainsi, il fonctionne de la même quel que soit l'endroit où vous êtes en cours d'exécution de PHP. Il y a une liste de codage pris en charge ici: http://php.net/manual/en/mbstring.encodings.phpDonc, en résumé, je suppose que vous pourriez dire que
mb_convert_encoding()
est plus fiable à utiliser si vous voulez soutenir les différentes plates-formes. Toutefois, si vous utiliseziconv()
sur Linux (par exemple), puis il prend en charge beaucoup plus de codages (voiriconv --list
).La performance relative des fonctions dépend aussi de la spécifiques
iconv()
mise en œuvre, évidemment.//TRANSLIT
et//IGNORE
options pour traiter avec les non-convertible caractères.. lire le iconv commentaires pour//IGNORE
problèmes qui feront de votre code jeter E_NOTICE erreurs. mb_convert_encoding pouvez uniquement supprimer des caractères non valides avecini_set('mbstring.substitute_character','none');
(voir mbstring.substitute_character)iconv -l
pour windowsDepuis PHP 5.4 il y a un bug.
Parfois, iconv retourne une chaîne vide au lieu de retourner une chaîne de caractères avec "similaires" char.
De sorte que vous devriez utiliser mb_convert_encoding.
iconv
versions sur chaque machine hôte.