Besoin d'aide ? 06 84 11 11 66

PHP preg_match taille limite (backtrack_limit)

Vous utilisez preg_match et vous n’avez aucun résultat avec certain contenu dans le subject ? Si vous êtes sûr de votre pattern et subject, je vous conseille de faire des tests avec un subject de tailles différents. Si vous obtenez un résultat avec un petit contenu et non avec un gros contenu, le problème doit venir de la configuration de php.

Vous pouvez dans un premier temps regarder l’erreur retournée par preg_match en utilisant le code ci-dessous :

if (preg_last_error() == PREG_NO_ERROR) {
    print 'There is no error.';
  }
  else if (preg_last_error() == PREG_INTERNAL_ERROR) {
      print 'There is an internal error!';
  }
  else if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
      print 'Backtrack limit was exhausted!';
  }
  else if (preg_last_error() == PREG_RECURSION_LIMIT_ERROR) {
      print 'Recursion limit was exhausted!';
  }
  else if (preg_last_error() == PREG_BAD_UTF8_ERROR) {
      print 'Bad UTF8 error!';
  }
  else if (preg_last_error() == PREG_BAD_UTF8_ERROR) {
      print 'Bad UTF8 offset error!';
  }

Si le résultat est PREG_BACKTRACK_LIMIT_ERROR alors il vous faut changer la configuration de php.ini

Pour modifier la configuration, il faut vous rendre dans le fichier de configuration de php.ini, puis changer la valeur pour pcre.backtrack_limit.

Reste à trouver la bonne configuration par rapport à votre besoin.

Written by Sébastien Houzet

Professionnel du web depuis plus de 15 ans. J'ai travaillé en Agence et chez l'annonceur dans le cadre de projet e-commerce. Je peux vous accompagner dans vos projets web et mobile.

Leave a reply