Problème avec preg_replace_callback chez Free - PHP  

Forum > PHP > Problème avec preg_replace_callback chez Free

Problème avec preg_replace_callback chez Free

avatar de Chopin
Membre
# Le 10/11/2012 à 14h10
Me revoila :)

Avec un problème assez technique ce coup ci. Comme dit dans le titre, pas moyen d'utiliser un preg_replace_callback couplé avec de la POO chez Free.fr. Je précise que j'ai activé le php5 via la ligne "php 1" dans un .htacess mais rien n'y fait.

Je ne vais pas vous donner mon code car il est assez lourd et surtout TOP secret :) Alors je vais plutôt vous donner un exemple de code qui fonctionne en local mais pas chez Free.

Grossomodo, ça, sa va mais pas chez Free
Erreur renvoyé chez Free => Warning: preg_replace_callback() [function.preg-replace-callback]: requires argument 2, 'test::testCallBack', to be a valid callback in /mnt/105/sda/0/2/toutannuaire/test/test.php on line 30

  1. class test
  2. {
  3. private $_array = array('bli' => 'bla');
  4. private $_regex = '#(bli)#';
  5. private $_text = 'Bla bla bli bla bla';
  6.  
  7. function testCallBack($data)
  8. {
  9. return $this->_array[$data[1]];
  10. }
  11. function afficheTest()
  12. {
  13. echo preg_replace_callback($this->_regex, 'test::testCallBack', $this->_text);
  14. }
  15. }
  16.  
  17. $test = new test();
  18. $test->afficheTest();


Alors je me suis dit, c'est le callBack qui ne va pas chez eux alors j'ai testé ça pour voir

  1. $text = 'Bla bla bli bla bla';
  2. $regex = '#(bli)#';
  3. $array = array('bli' => 'bla');
  4.  
  5. function testCallBack($data)
  6. {
  7. global $array;
  8. return $array[$data[1]];
  9. }
  10.  
  11. echo preg_replace_callback($regex, 'testCallBack', $text);



Et la ça marche, donc, c'est la POO qui déraille. Je pense que le callBack chez Free ne reconnait pas une fonction en POO comme "test::testCallBack". N'y a t'il pas un autre moyen en POO d'indiquer une fonction à preg_replace_callback ? Je sais qu'il y a create_function() mais mes fonctions sont tellement grande que ça risque de posser problème.


Voila voila, j'espère que vous avez réussi à me suivre et surtout que vous aurez des idées pour m'aider.

Merci par avance !