Post by OtomaticPost by Pierre www.aribaut.comHello, pour un script de forum (PunBB), la fonction create_function()
encore valable sous php 7.1 n'est plus valable en passant à php 7.2.
Par quoi faut-il la remplacer ?
Bonjour,
Quelques exemples provenant de FluxBB (Très similaire à PunBB), par
exemple dans le fichier parser.php.
Post by Pierre www.aribaut.com$temp = preg_replace_callback($re_list, create_function('$matches',
'return preparse_list_tag($matches[2], $matches[1]);'), $text);
$temp = preg_replace_callback($re_list, function($matches) { return
preparse_list_tag($matches[2], $matches[1]); }, $text);
$content = preg_replace_callback($re_list,
create_function('$matches', 'return handle_list_tag($matches[2],
$matches[1]);'), $content);
$content = preg_replace_callback($re_list, function($matches) {
return handle_list_tag($matches[2], $matches[1]); }, $content);
$text =
preg_replace_callback('%\[quote=("|&\#039;|"|\'|)([^\r\n]*?)\\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);
$text =
preg_replace_callback('%\[quote=("|&\#039;|"|\'|)([^\r\n]*?)\\1\]%s',
function($matches) use ($lang_common) { return '</p><div
class="quotebox"><cite>'.str_replace(array('[', '\\"'),
array('[', '"'), $matches[2])."
{$lang_common['wrote']}</cite><blockquote><div><p>"; }, $text);
Où ça devient un peu plus compliqué, c'est lorsque la fonction callback
est effectuée sur des éléments de tableau, comme par la ligne
Post by Pierre www.aribaut.com$text = preg_replace_callback($pattern_callback[$i],
create_function('$matches', 'return '.$replace_callback[$i].';'),
$text);
$text = preg_replace_callback($pattern_callback[$i],
$replace_callback[$i], $text);
donc, ce seront les éléments du tableau $replace_callback[] qui
Post by Pierre www.aribaut.com $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])';
$replace_callback[] = function($matches) { return
handle_url_tag($matches[1]); };
$replace_callback[] = function($matches) { return
handle_url_tag($matches[1], $matches[2]); };
$replace[] = '<a href="mailto:$1">$1</a>';
$replace[] = '<a href="mailto:$1">$2</a>';
$replace_callback[] = function($matches) { return
handle_url_tag(get_base_url(true).'/viewtopic.php?id='.$matches[1]); };
$replace_callback[] = function($matches) { return
handle_url_tag(get_base_url(true).'/viewtopic.php?id='.$matches[1],
$matches[2]); };
$replace_callback[] = function($matches) { return
handle_url_tag(get_base_url(true).'/viewtopic.php?pid='.$matches[1].'#p'.$matches[1]);
};
$replace_callback[] = function($matches) { return
handle_url_tag(get_base_url(true).'/viewtopic.php?pid='.$matches[1].'#p'.$matches[1],
$matches[2]); };
$replace_callback[] = function($matches) { return
handle_url_tag(get_base_url(true).'/viewforum.php?id='.$matches[1]); };
$replace_callback[] = function($matches) { return
handle_url_tag(get_base_url(true).'/viewforum.php?id='.$matches[1],
$matches[2]); };
$replace_callback[] = function($matches) { return
handle_url_tag(get_base_url(true).'/profile.php?id='.$matches[1]); };
$replace_callback[] = function($matches) { return
handle_url_tag(get_base_url(true).'/profile.php?id='.$matches[1],
$matches[2]); };
truc, trop faible niveau de php (je connais juste 2/3 trucs).