utf8_(fr|de)code retiré de php7?

J'ai récemment passé à PHP 7 sur mon serveur de développement, qui a a très bien fonctionné jusqu'à maintenant.

Depuis que j'ai mis à jour pour PHP 7.0.3-10+deb.sury.org~trusty+1 (plus tôt aujourd'hui), le utf8_decode et utf8_encode les fonctions ne sont plus accessibles. Ils étaient, cependant, dans les versions précédentes de PHP7. Lorsqu'elle est appelée, une erreur fatale est générée.

J'ai lu que ces fonctions sont assurées par le mbstring extension, que j'ai vérifié avec var_dump(extension_loaded('mbstring')); est chargé.

Comment puis-je obtenir les fonctions ci-dessus pour la retrouver?

  • mbstring ne fournit pas cette fonction. Curieusement, elle est répertoriée dans XML Parser Fonctions. Peut-être que vous aimeriez développer un peu sur le message d'erreur? Le test rapide sur mon (personnalisé) PHP7 montre qu'il est "toujours" fonctionne...
  • Le message d'erreur complet est Fatal error: Uncaught Error: Call to undefined function utf8_encode() in .... J'ai réussi à remplacer la coder la fonction avec mb_convert_encoding($value, 'UTF-8'), mais je veux toujours savoir ce qui provoque l'erreur.
  • J'avais besoin de la fonction de convertir les chaînes que j'ai eu de LDAP. Que puis-je dire sur le message d'erreur?
  • Est-ce le même paquet? Qui est, n'a 7.0.3-9 produisent pas cette erreur? Si oui, vous pourriez envisager le dépôt d'un rapport de bogue avec deb.sury.org.
  • Malheureusement, je ne me souviens pas de la version du serveur courut en avant, mais l'erreur n'a certainement pas se produire avant la mise à jour de 7.0.3-10. Je vais faire quelques recherches sur les récents changements de PHP7. Merci pour m'amener sur la bonne voie!
  • Si vous exécutez php -m ne liste xml? Vous avez probablement besoin d'installer le paquet comme php7-xml.
  • Cloué, merci! Pas de xml extension -> installé -> le problème est résolu. N'hésitez pas à écrire cela comme une réponse afin que je puisse officiellement l'accepter.
  • mb_convert_encoding($value, 'UTF-8') seulement fait la même chose que utf8_encode($value) si votre default_charset (PHP 5.6+) ou mbstring.internal_encoding (PHP 5.5 ou une version antérieure) est réglé sur "ISO-8859-1". Sinon, vous aurez envie de définir explicitement le de codage avec mb_convert_encoding($value, 'UTF-8', 'ISO-8859-1')
  • Merci pour l'astuce. Je suis de retour à utf8_encode de toute façon.

InformationsquelleAutor paolo | 2016-02-29