Le site des utilisateurs francophones de FluxBB.
Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je maintiens un vieux forum fluxbb moddé un peu partout mais qui tourne pas mal.
Suite à une mise à jour de PHP, j'obtiens ce message récurrent :
[08-Apr-2013 21:12:28 Europe/Paris] PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in \include\parser.php on line 852Qui correspond à :
$text = preg_replace($pattern, $replace, $text);Je me doute du coup que le problème vient sans doute de l'expression régulière, mais pas de /e à l'horizon.
Sauriez vous m'aider à corriger cela ?
Merci
Hors ligne
Salut,
Tu dois être passé en php5.5 d'après ce que je lis là: http://www.php.net/manual/fr/reference. … ifiers.php
(Le e est dans le tableau $pattern)
Ya un exemple sur le lien donné pour remplacer.
Bouh !
StarShip Renaissance
Hors ligne
Certes, il y a un exemple, cependant, il me semble impossible a adapter aisément.
En effet, l'exemple fourni une fonction dans laquelle on reprend le pattern en dur.
Or dans le fichier parser.php, ils y en a un paquet, des pattern.
Du coup trouver comment obtenir une fonction générique, cela dépasse mes compétences.
Je me demande comment fluxbb va contourner le problème puisqu'il me semble que l'option eval est aussi utilisée dans la toute dernière version de fluxbb.
Merci de votre attention.
Dernière modification par bagu (08-04-2013 22:27:22)
Hors ligne
Bonjour,
PHP 5.5 est toujours en beta et n'est pas sorti, donc ça m'étonnerais fortement que le problème soit là.
Avec FluxBB 1.5.3, il est utilisé ucp_preg_replace à la ligne 851 de parser.php, fonction qui est définie dans functions.php avec le commentaire suivant :
// Replace string matching regular expression
//
// This function takes care of possibly disabled unicode properties in PCRE builds
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Fichtre, cela m'a donc échappé !
Je vais voir comment faire pour transposer cela au forum actuel.
Merci beaucoup
Hors ligne
Bonjour,
Je tiens à préciser que ce problème se posera vraiment avec PHP 5.5.x. J'ai posé la question aux développeurs sur FluxBB.org. Les modifications pour transposer preg_replace avec modifier "e" en preg_replace_callback ne sont pas simples à implémenter, surtout pour le traitement de tableaux pattern et replace. J'étudie... 
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Diantre ! Je suis donc eu et re-eu 
Bien, ben je vais patienter alors 
Hors ligne
Bonjour,
Relativement simple à faire pour remplacer un "preg_replace" avec modificateur de pattern "e" sur une seule chaine, par "preg_replace_callback".
Par exemple, pour traiter les citations (quote), dans parser.php on a :
$text = preg_replace('%\[quote=("|&\#039;|"|\'|)(.*?)\\1\]%se', '"</p><div class=\"quotebox\"><cite>".str_replace(array(\'[\', \'\\"\'), array(\'[\', \'"\'), \'$2\')." ".$lang_common[\'wrote\']."</cite><blockquote><div><p>"', $text);que l'on remplace par :
//[modif oto] for PHP 5.5.0 - Replacement of preg_replace and pattern modifier "e" with preg_replace_callback
$callback = function ($matches) {
global $lang_common;
return "</p><div class=\"quotebox\"><cite>".str_replace(array('[', '\\"'), array('[', '"'), $matches[2])." ".$lang_common['wrote']."</cite><blockquote><div><p>";
};
$text = preg_replace_callback('%\[quote=("|&\#039;|"|\'|)(.*?)\\1\]%s', $callback, $text);Mais, je n'ai pas encore trouvé l’algorithmie lorsque l'on a affaire à des tableaux de "pattern" et de "replace" et avec des fonctions "callback" différentes.
Je cogite...
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Bonjour,
La modification que j'ai donné pour supporter PHP 5.5 utilise les fonctions anonymes or, cette possibilité n'a été introduite qu'à partir de PHP 5.3.0, ce qui fait que cette manière de faire ne sera pas compatible avec une ancienne version de PHP < 5.3.0.
J'ai donc utilisé la fonction create_function qui est supportée par les versions de PHP < 5.3.0.
//[modif oto] for PHP 5.5.0 - Replacement of preg_replace and pattern modifier "e" with preg_replace_callback
$callback = create_function ('$matches',
'global $lang_common;
return "</p><div class=\"quotebox\"><cite>".str_replace(array(\'[\', \'\\"\'), array(\'[\', \'"\'), $matches[2])." ".$lang_common[\'wrote\']."</cite><blockquote><div><p>";'
);
$text = preg_replace_callback('%\[quote=("|&\#039;|"|\'|)(.*?)\\1\]%s', $callback, $text);De plus, cela simplifie drastiquement les modifications de la chaîne replace pour la transformer en fonction callback ; il n'y a que les variables des regex à modifier, par exemple \'$2\' en $matches[2].
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Bonjour,
C'est « relativement » simple à remplacer preg_replace avec modificateur "e" en preg_replace_callback lorsque la règle de recherche (pattern) et celle de remplacement (replace) sont des éléments simples et pas des tableaux.
Ça devient un peu plus complexe dans le cas de tableaux, car seulement quelques éléments peuvent avoir le modificateur "e".
Prenons par exemple le fichier parser.php et la fonction do_bbcode qui utilise preg_replace sur des tableaux avec de nombreux éléments et d'autant plus nombreux si on a mis en place une barre BBcode comme FluxToolBar.
J'ai fait un essai en traitant séparément les modificateurs "e". Ça fonctionne très bien, mais il y a peut-être mieux.
Le code originel est (lignes 833-839):
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=$1\', \'$2\')';
// This thing takes a while! :)
$text = preg_replace($pattern, $replace, $text);
return $text;Remplacé par
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=$1\', \'$2\')';
// This thing takes a while! :)
//$text = preg_replace($pattern, $replace, $text);
// This thing takes a while and may be another while!
//[modif oto] for PHP 5.5.0 - Replacement of preg_replace and pattern modifier "e" with preg_replace_callback
//Separate patterns with "e" modifier and without
$pattern_normal = $replace_normal = array();
for($i = 0; $i < count($pattern) ; $i++)
{
if(substr($pattern[$i],-1) == "e")
{
$temp = str_replace(array('\'$1$3\'','\'$2$4\'','\'$1\'', '\'$2\'', '$1', '$2'), array('$matches[1].$matches[3]','$matches[2].$matches[4]','$matches[1]','$matches[2]','$matches[1]','$matches[2]'), $replace[$i]);
$text = preg_replace_callback(substr($pattern[$i],0,-1), create_function('$matches','return '.$temp.';'), $text);
}
else
{
$pattern_normal[] = $pattern[$i];
$replace_normal[] = $replace[$i];
}
}
$text = preg_replace($pattern_normal, $replace_normal, $text);
//[modif oto] - end
return $text;Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Bonjour,
Je préfère la solution ci-dessous qui ne demande que très peu de modifications des scripts, et seulement si besoin.
On ajoute deux fonctions dans include/functions.php
//[modif oto] for PHP 5.5.0 - Replacement of preg_replace and pattern modifier "e" with preg_replace_callback
function php55_callback($element)
{
return str_replace(
array('\'$1$3\'','\'$2$4\'','\'$1\'', '\'$2\'', '$1', '$2'),
array('$matches[1].$matches[3]','$matches[2].$matches[4]','$matches[1]','$matches[2]','$matches[1]','$matches[2]'),
$element);
}
//Separate patterns with "e" modifier and without
function php55_preg_replace($pattern, $replace, $text)
{
if(!is_array($pattern)) {
$pattern = array($pattern);
$replace = array($replace);
}
$count = count($pattern);
$pattern_normal = $replace_normal = array();
for($i = 0; $i < $count ; $i++)
{
if(substr($pattern[$i],-1) == "e")
$text = preg_replace_callback(substr($pattern[$i],0,-1), create_function('$matches','return '.php55_callback($replace[$i]).';'), $text);
else
{
$pattern_normal[] = $pattern[$i];
$replace_normal[] = $replace[$i];
}
}
if(empty($pattern_normal))
return $text;
else
return preg_replace($pattern_normal, $replace_normal, $text);
}Et on ne modifie que les appels à preg_replace qui en ont besoin (Erreurs sous PHP 5.5.x) par php55_preg_replace.
Par exemple, dans include/parser.php, tous les preg_replace qui ont $re_list comme premier paramètre, par exemple :
// Tidy up lists
$temp = preg_replace($re_list, 'preparse_list_tag(\'$2\', \'$1\')', $text);par
// Tidy up lists
$temp = php55_preg_replace($re_list, 'preparse_list_tag(\'$2\', \'$1\')', $text);Actuellement, je n'ai pas (encore) « balayé » tous les appels à preg_replace dont le pattern de recherche a le modificateur "e".
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Bonjour,
Pour le support de PHP 5.5.x, plutôt que d'écrire une fonction « magique », il est, de loin, préférable de modifier chaque appel preg_replace(...) qui utilise un pattern avec modificateur "e", par un appel à preg_replace_callback(...) avec une fonction en second paramètre ; comme cela, ça reste compatible avec PHP < 5.5.0 et ça utilise un code correct, sans usine à gaz.
Il n'y a que include/parser.php et la function ucp_preg_replace dans include/functions.php à modifier.
Il faut néanmoins porter attention à ce que, contrairement à preg_replace(...), preg_replace_callback(...) n'accepte pas de tableau (array) comme second paramètre (fonction à exécuter).
La nouvelle fonction ucp_preg_replace devient :
//
// Replace string matching regular expression
//
// This function takes care of possibly disabled unicode properties in PCRE builds
// [modif oto] - Added $callback parameter to use preg_replace_callback
// in place of preg_replace with modifier "e" on pattern
function ucp_preg_replace($pattern, $replace, $subject, $callback = false)
{
if($callback)
$replaced = preg_replace_callback($pattern, create_function('$matches', 'return '.$replace.';'), $subject);
else
$replaced = preg_replace($pattern, $replace, $subject);
// If preg_replace() returns false, this probably means unicode support is not built-in, so we need to modify the pattern a little
if ($replaced === false)
{
if (is_array($pattern))
{
foreach ($pattern as $cur_key => $cur_pattern)
$pattern[$cur_key] = str_replace('\p{L}\p{N}', '\w', $cur_pattern);
$replaced = preg_replace($pattern, $replace, $subject);
}
else
$replaced = preg_replace(str_replace('\p{L}\p{N}', '\w', $pattern), $replace, $subject);
}
return $replaced;
}Et, sans donner toutes les modifications de parser.php, voilà quelques exemples :
Remplacer :
$re_list = '%\[list(?:=([1a*]))?+\]((?:[^\[]*+(?:(?!\[list(?:=[1a*])?+\]|\[/list\])\[[^\[]*+)*+|(?R))*)\[/list\]%ie';par
// [modif oto] - Suppress modifier "e" to be used for preg_replace_callback for PHP 5.5.x
$re_list = '%\[list(?:=([1a*]))?+\]((?:[^\[]*+(?:(?!\[list(?:=[1a*])?+\]|\[/list\])\[[^\[]*+)*+|(?R))*)\[/list\]%i';Remplacer :
$temp = preg_replace($re_list, 'preparse_list_tag(\'$2\', \'$1\')', $text);par
//[modif oto] - preg_replace_callback for PHP 5.5.x
$temp = preg_replace_callback($re_list, create_function('$matches', 'return preparse_list_tag($matches[2], $matches[1]);'), $textRemplacer :
$text = preg_replace('%\[quote=("|&\#039;|"|\'|)(.*?)\\1\]%se', '"</p><div class=\"quotebox\"><cite>".str_replace(array(\'[\', \'\\"\'), array(\'[\', \'"\'), \'$2\')." ".$lang_common[\'wrote\']."</cite><blockquote><div><p>"', $text);par
//[modif oto] - replace prege_replace with pattern and modifier "e" into preg_replace_callback for PHP 5.5.x
$text = preg_replace_callback('%\[quote=("|&\#039;|"|\'|)(.*?)\\1\]%s', create_function('$matches', 'global $lang_common; return "</p><div class=\"quotebox\"><cite>".str_replace(array(\'[\', \'\\"\'), array(\'[\', \'"\'), $matches[2])." ".$lang_common[\'wrote\']."</cite><blockquote><div><p>";'), $text);Puis dans la longue liste des $pattern[] et $replace[], on remplacera tous ceux qui contiennent le modificateur "e" dans $pattern[], par exemple (Tous ne sont pas donnés):
Remplacer :
$pattern[] = $re_list;
$replace[] = 'handle_list_tag(\'$2\', \'$1\')';par
$pattern_callback[] = $re_list;
$replace_callback[] = 'handle_list_tag($matches[2], $matches[1])';Remplacer :
$pattern[] = '%\[topic\]([1-9]\d*)\[/topic\]%e';
$pattern[] = '%\[topic=([1-9]\d*)\](.*?)\[/topic\]%e';
$pattern[] = '%\[post\]([1-9]\d*)\[/post\]%e';
$pattern[] = '%\[post=([1-9]\d*)\](.*?)\[/post\]%e';
$pattern[] = '%\[forum\]([1-9]\d*)\[/forum\]%e';
$pattern[] = '%\[forum=([1-9]\d*)\](.*?)\[/forum\]%e';
$pattern[] = '%\[user\]([1-9]\d*)\[/user\]%e';
$pattern[] = '%\[user=([1-9]\d*)\](.*?)\[/user\]%e';
$replace[] = 'handle_url_tag(\'$1\')';
$replace[] = 'handle_url_tag(\'$1\', \'$2\')';
$replace[] = '<a href="mailto:$1">$1</a>';
$replace[] = '<a href="mailto:$1">$2</a>';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?id=$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?id=$1\', \'$2\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?pid=$1#p$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?pid=$1#p$1\', \'$2\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewforum.php?id=$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/viewforum.php?id=$1\', \'$2\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=$1\')';
$replace[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=$1\', \'$2\')';par
$pattern_callback[] = '%\[topic\]([1-9]\d*)\[/topic\]%';
$pattern_callback[] = '%\[topic=([1-9]\d*)\](.*?)\[/topic\]%';
$pattern_callback[] = '%\[post\]([1-9]\d*)\[/post\]%';
$pattern_callback[] = '%\[post=([1-9]\d*)\](.*?)\[/post\]%';
$pattern_callback[] = '%\[forum\]([1-9]\d*)\[/forum\]%';
$pattern_callback[] = '%\[forum=([1-9]\d*)\](.*?)\[/forum\]%';
$pattern_callback[] = '%\[user\]([1-9]\d*)\[/user\]%';
$pattern_callback[] = '%\[user=([1-9]\d*)\](.*?)\[/user\]%';
$replace_callback[] = 'handle_url_tag($matches[1])';
$replace_callback[] = 'handle_url_tag($matches[1], $matches[2])';
$replace[] = '<a href="mailto:$1">$1</a>';
$replace[] = '<a href="mailto:$1">$2</a>';
$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?id=.$matches[1]\')';
$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?id=.$matches[1],$matches[2]\')';
$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?pid=.$matches[1].#p.$matches[1]\')';
$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/viewtopic.php?pid=.$matches[1].#p.$matches[1],$matches[2]\')';
$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/viewforum.php?id=.$matches[1]\')';
$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/viewforum.php?id=.$matches[1],$matches[2]\')';
$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=.$matches[1]\')';
$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=.$matches[1],$matches[2]\')';Ensuite, il va falloir traiter, un par un, tous les élements $callback_replace, donc, remplacer :
// This thing takes a while! :)
$text = preg_replace($pattern, $replace, $text);
return $text;par
// This thing takes a while! :)
$text = preg_replace($pattern, $replace, $text);
//[modif oto] - Loop for preg_replace_callback as this function does not accept array as second parameter
$count = count($pattern_callback);
for($i = 0 ; $i < $count ; $i++)
{
$text = preg_replace_callback($pattern_callback[$i], create_function('$matches', 'return '.$replace_callback[$i].';'), $text);
}
return $text;Les deux appels à ucp_preg_replace.
Remplacer :
$text = ucp_preg_replace('%(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(https?|ftp|news){1}://([\p{L}\p{N}\-]+\.([\p{L}\p{N}\-]+\.)*[\p{L}\p{N}]+(:[0-9]+)?(/(?:[^\s\[]*[^\s.,?!\[;:-])?)?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])%uie', 'stripslashes(\'$1$2$3$4\').handle_url_tag(\'$5://$6\', \'$5://$6\', true).stripslashes(\'$4$10$11$12\')', $text);
$text = ucp_preg_replace('%(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(www|ftp)\.(([\p{L}\p{N}\-]+\.)+[\p{L}\p{N}]+(:[0-9]+)?(/(?:[^\s\[]*[^\s.,?!\[;:-])?)?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])%uie', 'stripslashes(\'$1$2$3$4\').handle_url_tag(\'$5.$6\', \'$5.$6\', true).stripslashes(\'$4$10$11$12\')', $text);par
$text = ucp_preg_replace('%(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(https?|ftp|news){1}://([\p{L}\p{N}\-]+\.([\p{L}\p{N}\-]+\.)*[\p{L}\p{N}]+(:[0-9]+)?(/(?:[^\s\[]*[^\s.,?!\[;:-])?)?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])%ui', 'stripslashes($matches[1].$matches[2].$matches[3].$matches[4]).handle_url_tag($matches[5]."://".$matches[6], $matches[5]."://".$matches[6], true).stripslashes($matches[4].$matches[10].$matches[11].$matches[12])', $text, true);
$text = ucp_preg_replace('%(?<=[\s\]\)])(<)?(\[)?(\()?([\'"]?)(www|ftp)\.(([\p{L}\p{N}\-]+\.)+[\p{L}\p{N}]+(:[0-9]+)?(/(?:[^\s\[]*[^\s.,?!\[;:-])?)?)\4(?(3)(\)))(?(2)(\]))(?(1)(>))(?![^\s]*\[/(?:url|img)\])%ui','stripslashes($matches[1].$matches[2].$matches[3].$matches[4]).handle_url_tag($matches[5].$matches[6], $matches[5].$matches[6], true).stripslashes($matches[4].$matches[10].$matches[11].$matches[12])', $text, true);Je réitère le fait que toutes les modifications nécessaires ne sont pas données. En principe FluxBB 1.5.4 sera compatible PHP 5.5.0
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Bonjour,
Vu les modification faites sur mon forum, je pense attendre la version 1.5.4 afin de tout mettre à jour d'un coup.
Merci de ces explications.
Par contre, je ne comprends pas pourquoi ils ont déprécier cette fonctionnalité. Cela red l'écriture des scripts sacrément plus complexe.
Hors ligne
Hors ligne
Cela rend l'écriture des scripts sacrément plus complexe.
Bonjour,
C'est vrai. Mais c'est une autre démarche, il faut raisonner en terme de function et non plus de regex pour le terme de remplacement. En plus, preg_replace_callback n'accepte pas les tableaux (array) comme élément de remplacement.
Note : Bien penser, par exemple, qu'en regex $5$6 n'est pas le même chose que $5.$6 Plus de trois heures de recherches et d'essais pour trouver où était passé ce foutu point qui manquait dans une url.
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche
Hors ligne
Bonjour,
Tu peux faire ceci si tu veux màj progressivement (merci Oto pour la modif
).
Ouep, mais non 
J'ai un peu trop de retard...La fonction ucp_preg_replace n'existe pas dans ma version du fichier functions.php
J'ai une version 1.4.2 avec plein de patch de sécurité dessus 
C'est pour ça que je disais que j'allais attendre un peu...D'autant qu'il va me falloir retrouver quelques mods (color of group et anniversaire par exemple)
D'ailleurs, j'ai peur pour la migration de la base de donnée. 
D'ailleurs, en parlant du mod anniversaire, c'est dommage que ce ne soit pas une information du profil dans fluxbb. Car cela permettrait de faire ds section interdites aux mineurs par exemple (bon, ce n'est qu'un exemple, mais il y a pleins d'usages pour cette information...Même si on peut facilement mentir sur son age)
Dernière modification par bagu (20-04-2013 21:20:28)
Hors ligne
Pour le support de PHP 5.5.x, plutôt que d'écrire une fonction « magique », il est, de loin, préférable de modifier chaque appel preg_replace(...) qui utilise un pattern avec modificateur "e", par un appel à preg_replace_callback(...) avec une fonction en second paramètre ; comme cela, ça reste compatible avec PHP < 5.5.0 et ça utilise un code correct, sans usine à gaz.
Il n'y a que include/parser.php et la function ucp_preg_replace dans include/functions.php à modifier.
Il faut néanmoins porter attention à ce que, contrairement à preg_replace(...), preg_replace_callback(...) n'accepte pas de tableau (array) comme second paramètre (fonction à exécuter).
…
Je réitère le fait que toutes les modifications nécessaires ne sont pas données. En principe FluxBB 1.5.4 sera compatible PHP 5.5.0
Excellent. 
J'ai utilisé la méthode pour un porjet qui n'avait rien à voir avec FluxBB.
Hors ligne
Pages : 1