3 votes

Pourquoi `ereg` est-il déprécié en PHP ?

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 ?

3voto

abelito Points 642

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() .

PHP ereg vs. preg

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.

1voto

hsz Points 46509

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.

0voto

iBug Points 20818

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.

0voto

Dean Harding Points 40164

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.com

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.

Powered by:

X