8768 sujets

Développement web côté serveur, CMS

Bonjour,
Dans le cadre d'une migration de version PHP, je rencontre une erreur dans le programme ../library/Zend/Filter/PregReplace.php lorsque j'utilise la nouvelle fonction preg_replace_callback()

Warning: preg_replace_callback(): Requires argument 2, 'Array', to be a valid callback

J'essaie en vain de remplacer la ligne originale suivante :
return preg_replace($this->_matchPattern, $this->_replacement, $value);

en utilisant la nouvelle fonction preg_replace_callback()
J'ai à peu près essayé toutes les syntaxes proposées dans la doc de php.net, rien n'y fait ;-(
Merci par avance pour votre aide.
Modérateur
Salut,

Tu dois le savoir si tu as lu la doc mais il faut remplacer $this->_replacement par une fonction de callback. Tu as tenté ? Ca donne quoi comme code et comme erreur ?
Bonjour,

J'ai remplacé par :
return preg_replace_callback(
$this->_matchPattern,
function ($matches) {
return ($matches[1]);
},
$value);

L'erreur est :
Warning: preg_replace_callback(): The /e modifier is no longer supported, use preg_replace_callback instead in /opt/application/intpub/php/G04R00C00/welcome/library/Zend/Filter/PregReplace.php on line 179
Je n'en sais absolument rien ;-(. C'est dans le lancement du framework Zend.
Le replace est appelé dans un php propre à Zend (/library/Zend/Filter/PregReplace.php) qui sert à adresser des scripts php dans l'arborescence Zend, par exemple en remplaçant Clean_cache.php en CleanCache.php sous library/Centurion/Signal/

La fonction appelée dans PregReplace.php est :

public function filter($value)
{
if ($this->_matchPattern == null) {
require_once 'Zend/Filter/Exception.php';
throw new Zend_Filter_Exception(get_class($this) . ' does not have a valid MatchPattern set.');
}
return preg_replace($this->_matchPattern, $this->_replacement, $value);
}