Pourquoi est-ce que ereg
déprécié en PHP ?
J'avais beaucoup de fonctions qui utilisaient cela, maintenant ils donnent toujours un avertissement.
Quelle est l'alternative à cela aussi ?
Pourquoi est-ce que ereg
déprécié en PHP ?
J'avais beaucoup de fonctions qui utilisaient cela, maintenant ils donnent toujours un avertissement.
Quelle est l'alternative à cela aussi ?
Ereg est déprécié car il a été remplacé par l'extension PCRE. La ou les raisons pour lesquelles elle a été remplacée et dépréciée sont expliquées dans le lien ci-dessous, mais pour vous faire gagner du temps, voici la réponse copiée-collée :
Note : preg_match(), qui utilise une syntaxe d'expression régulière compatible avec Perl, est souvent une alternative plus rapide à ereg() .
L'une des différences entre les deux est que ereg recherche le résultat correspondant le plus long, tandis que preg recherche le premier résultat. Voici la liste des différences entre les deux pour vous aider à déterminer la meilleure façon de mettre à jour votre code : http://www.php.net/manual/en/reference.pcre.pattern.posix.php
Il faut noter que PHP 6.0 a COMPLÈTEMENT supprimé ereg, donc si vous devez déplacer votre code vers un serveur plus récent qui utilise PHP 6.0, la fonction ereg ne sera plus disponible.
http://pl.php.net/manual/en/function.ereg.php
Note : Depuis PHP 5.3.0, l'extension regex est dépréciée au profit de l'extension PCRE. L'appel de cette fonction émettra un avis E_DEPRECATED. Consultez la liste des différences pour obtenir de l'aide sur la conversion vers PCRE.
L'une des raisons possibles est le souci des performances, comme l'ont déjà répondu d'autres personnes.
J'aimerais ajouter une autre raison (encore) possible :
Supposons que vous ayez écrit un code comme celui-ci (PHP 5.3) :
<?php
$arg=$_GET['key'];
if (ereg('^[A-Za-z0-9]+$', $arg) === FALSE){
die('Invalid key');
}
# Do some other things with $arg
?>
On peut le contourner en fournissant cette URL :
foo.php?key=A%00text
^~~~
avec le text
partie étant n'importe quoi arbitrairement qu'il veut, ce qui laisse une énorme faille de sécurité dans le code. preg_match()
ne connaît pas ce problème. Donc vous feriez mieux de migrer tout votre code vers preg
comme ereg
n'est plus du tout disponible en PHP 6.0.
Il est dit pourquoi sur le page de documentation :
Nota: Depuis PHP 5.3.0, l'extension regex est dépréciée au profit de l'extension Extension PCRE . L'appel de cette fonction émettra un avis E_DEPRECATED. Voir le liste des différences pour obtenir de l'aide sur la conversion au PCRE.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.