IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Modification Preg_replace en Preg_replace_callback


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 1
    Par défaut Modification Preg_replace en Preg_replace_callback
    Bonjour,

    Je ne connais pas grand chose en PHP et suis confronté de part mon site internet au passage PHP5.6 en 7.2 et je dois adapter une fonction.
    J'ai essayé plusieurs solution mais en vain, n'ayant pas beaucoup de connaissance dans ce language et j'ai préféré demandé de l'aide.

    Voila la ligne d'origine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static function camilize($string = ''){
    		$class = preg_replace('/(?:^|_)(.?)/e', "strtoupper('$1')", $string);
    		return $class;
    	}
    il faudrait remplacer le preg_replace par preg_replace_callback et supprimer le petit e, après quelques lecture sur le net j'en suis arrivée à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static function camilize($string = ''){
    		$class = preg_replace_callback(
    		'/(?:^|_)(.?)/', 
    		function($matches) { return strtoupper($matches[1]); },
    		strtolower($string);
    		return $class);
    	}
    mais cela ne fonctionne pas.
    Auriez vous une idée ?
    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu as un message d'erreur à nous montrer, ou une description un peu plus explicite que "ça ne fonctionne pas" ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Il manque la parenthèse fermante de la fonction preg_replace_callback, probablement celle qui traîne après $class. Ce genre d'erreur, une bonne indentation, voire même la coloration syntaxique de ton éditeur devrait te la révéler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static function camilize($string = '') {
        $class = preg_replace_callback(
            '/(?:^|_)(.?)/', 
    	function($matches) { return strtoupper($matches[1]); },
            strtolower($string)
        );
        return $class;
    }
    La même chose sans la variable inutile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static function camilize($string = '') {
        return preg_replace_callback(
            '/(?:^|_)(.?)/', 
    	function($matches) { return strtoupper($matches[1]); },
            strtolower($string)
        );
    }
    La même chose sans regex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static function camilize($string = '') {
        return strtr(ucwords(strtolower($string), '_'), ['_'=>'']);
    }

Discussions similaires

  1. [RegEx] preg_replace() et preg_replace_callback
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 10/05/2016, 10h28
  2. Preg_replace to preg_replace_callback
    Par piratack007 dans le forum Langage
    Réponses: 8
    Dernier message: 15/12/2015, 20h19
  3. [PHP 5.5] preg_replace remplacé par preg_replace_callback
    Par nemox31 dans le forum Langage
    Réponses: 1
    Dernier message: 22/10/2015, 22h13
  4. [RegEx] transformer un preg_replace en preg_replace_callback (migration)
    Par le korrigan dans le forum Langage
    Réponses: 8
    Dernier message: 23/07/2015, 11h37
  5. Réponses: 11
    Dernier message: 23/07/2002, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo