Petit problème preg_replace_callback appellé deux fois..

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par thierry8, 26 Avril 2006.

  1. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    2 728
    J'aime reçus:
    0
    Helo !

    J'ai un soucis que je n'airrive pas à résoudre.

    voila grossièrement le code :
    Code:
      function _la($texte)
      {
        function test($val)
        {
          return '<LA>'.$val[1].'</LA>';
        }
        return preg_replace_callback('`\[LA\](.+)\[/LA\]`iU', 'test', $texte);
      }
    
    Si j'appel une seule fois la fonction function _la($texte), je n'ai aucun soucis. Seulement si je l'appel deux fois ou plus j'ai un problème, car il ne peut redéfinir la fonction test($val)..

    Message :
    Avez vous une idée de comment résoudre la chose ? :?
    Je ne vois vraiment plus... :(
     
  2. Xele
    Xele WRInaute discret
    Inscrit:
    10 Juillet 2005
    Messages:
    88
    J'aime reçus:
    0
    Code:
    function test($val) 
    { 
     return '<LA>'.$val[1].'</LA>'; 
    } 
    
    function _la($texte) 
      { 
         return preg_replace_callback('`\[LA\](.+)\[/LA\]`iU', 'test', $texte); 
      } 
    Ca devrais très bien marcher comme ca
     
  3. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    2 728
    J'aime reçus:
    0
    Oui en effet cela fonctionne, dans un déroulement procédurale.
    Moi j'ai cela dans une class et lorsque je sort la fonction test il ne me la reconnait pas (normal) et lorsque je rajoute le $this->test ça ne prend pas dans le preg_replace_callback.

    En revanche si je sort ma fonction $test de la class cela fonctionne, mais ce n'est pas correcte comme écriture.

    En fait le seule problème est que je ne peux que lui donner comme argument qu'une fonction "simple" et pas avec un $this->...

    Si d'autres idées sur ce problème épineux.
     
  4. Xele
    Xele WRInaute discret
    Inscrit:
    10 Juillet 2005
    Messages:
    88
    J'aime reçus:
    0
    Y'a ptetre la réponse que tu cherche dans les commentaires de la doc php :

    Code:
    Also, if you want to use a *static* class method for the callback function, you can refer to it like this:
       preg_replace_callback(pattern, array('ClassName', 'methodName'), subject)
    
    In PHP5, from within the class:
       preg_replace_callback(pattern, array('self', 'methodName'), subject) 
    ou bien

    Code:
    Instead of using preg_replace_callback() you could use preg_replace() like below:
    
    <?php
    
      // ** Simple function: **
         function my_function( $my_param_one, $my_param_two ) {
                 // ...
         }
         preg_replace( "! \{(.+)-(.+)\} !e", "my_function('\\1', '\\2')", $input_string );
    
      // ** Class: **
       class my_class {
    
               function my_class() {
                 preg_replace( "! \{(.+)-(.+)\} !e", "\$this->my_function('\\1', '\\2')", $input_string );
               }
    
               function my_function( $my_param_one, $my_param_two ) {
                 // ...
               }
       }
    
    ?> 
    Enfin ca se passe par la : http://fr3.php.net/preg_replace_callback

    Edit : par la aussi, merci google (recherche : preg_replace_callback class) : http://www.webmasterworld.com/forum88/7623.htm
     
  5. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    2 728
    J'aime reçus:
    0
    Yesssssssss!!!!!!!

    Super !!! Je te remercie beaucoup !

    J'étais sur la page de la doc. de PHP, mais il est vrai que je n'ai pas cherché en profondeur...à mes tords d'ailleurs...

    Mais ils auraient quand même pu l'indiquer en haut tout de même.
    En tout cas merci je me casse la tête depuis un moment !

    Pour info au passage: le preg_replace avec l'option e c'est déconseillé.
    C'est moins bien géré et plus lent.
     
Chargement...
Similar Threads - problème preg_replace_callback appellé Forum Date
WordPress Problème affichage style avec Elementor (titre, bordures, separateur) Administration d'un site Web Lundi à 12:12
Problème d'indexation de backlinks Débuter en référencement 24 Juillet 2022
Problème d'indexation de backlinks Problèmes de référencement spécifiques à vos sites 21 Juillet 2022
Probleme de visibilité de ma page Facebook Facebook 5 Juillet 2022
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022
Problème de vitesse d'affichage des pages sur Analytics Google Analytics 26 Avril 2022
Problème : Google Crawl et Index des pages en No Index et bloqué par le robot.txt Crawl et indexation Google, sitemaps 26 Avril 2022
Problème avec GA4 : nb de visiteurs temps réel et par jour Google Analytics 19 Avril 2022
Problème indexation pages précises en React.js Débuter en référencement 19 Avril 2022
Problème de référencement Demandes d'avis et de conseils sur vos sites 8 Avril 2022
Problème adsence : Annonces ne s'affichent plus AdSense 10 Mars 2022
problèmes procédures stockées Administration d'un site Web 9 Mars 2022
Problème récupération fichier vps Développement d'un site Web ou d'une appli mobile 5 Mars 2022
Problème config postfix. Administration d'un site Web 5 Mars 2022
Search Console Problème d'indexation Crawl et indexation Google, sitemaps 24 Février 2022