Règles de validation et erreur « support for \P, \p, and \X has not been compiled »

Il se peut que lors d’un passage sur un nouveau serveur vous voyez cette erreur apparaître, lors de la tentative de validation de champs avec la règle « alphaNumeric » de CakePHP.

Cette erreur PHP est due à la manière dont l’extension PCRE PHP a été compilé sur le serveur, en l’occurence sans le support des caractères unicode (internationaux). Si vous avez la main sur le serveur et un  peu de temps devant vous il suffit de recompiler l’extension avec l’option « –enable-unicode-properties ».

J’imagine bien que ce n’est pas vraiment une solution simple à mettre en oeuvre, alors voici une méthode à placer dans la classe AppModel de votre application (/app/app_model.php). Elle surcharge juste la règle de validation « alphaNumeric » qui posait problème, pour utiliser une validation plus simple … mais qui dans l’ensemble fait pareil :)

/**
 * Overrides the core validation rule as a workaround of server configuration (unicode not supported - PCRE extension)
 * http://www.typolight.org/faq-reader/items/compilation-failed.html
 *
 * @param mixed $check Value to check
 * @return boolean Success
 * @access public
 */
	public function alphaNumeric($check) {
		$check = array_shift(array_values($check));
		return Validation::custom($check, '/^[a-zA-Z0-9aàâäéèêëîïôöùûü ]*$/');
	}

Cette expression régulière en fait même un peu plus au sens où elle autorise également les accents pour la valeur du champ ! Si vous voulez vraiment avoir le même comportement que la règle de base supprimez la liste d’accents de l’expression régulière.

A vos claviers …

Partagez avec vos amis !
  • del.icio.us
  • Twitter
  • Tumblr
  • Facebook
  • Digg
  • LinkedIn
  • Google Bookmarks
  • email
  • Technorati
  • Wikio FR
  • Netvibes
  • RSS
If you enjoyed this post, make sure you subscribe to my RSS feed!

Cet article a été publié dans En vrac avec les mots-clefs : , , . Bookmarker le permalien. Laisser un commentaire ou faire un trackback : URL de trackback.
blog comments powered by Disqus
  • Speaker at the CakeFest 2010

    Creative Commons License


  • A lire aussi …