由 BG6RSH » 周六 10月 18, 2025 1:14 am
GeSHi 旧版用了 PHP 8 已经废弃的 create_function(),运行时爆致命错。修改/ext/o0johntam0o/codeboxplus/includes/geshi/geshi.php文件,手工改第 4746 行(以及后面若干行)
原旧代码:
if (!$recursed) {
$list = preg_replace('#\(\?\:(.)\)\?#', '\1?', $list);
static $callback_2;
if (!isset($callback_2)) {
$callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');
}
$list = preg_replace_callback('#\(\?\:((?:.\|)+.)\)#', $callback_2, $list);
}
修改后的代码:
if (!$recursed) {
// 1. 把 (?:a|b|c) 改写成 [abc]
$list = preg_replace('#\(\?\:(.)\)\?#', '\1?', $list);
static $callback_2;
if (!isset($callback_2)) {
$callback_2 = function ($matches) {
return '[' . str_replace('|', '', $matches[1]) . ']';
};
}
$list = preg_replace_callback('#\(\?\:((?:.\|)+.)\)#', $callback_2, $list);
}
GeSHi 旧版用了 PHP 8 已经废弃的 create_function(),运行时爆致命错。修改/ext/o0johntam0o/codeboxplus/includes/geshi/geshi.php文件,手工改第 4746 行(以及后面若干行)
原旧代码:
[Codebox=javascript file=Untitled.js]
if (!$recursed) {
$list = preg_replace('#\(\?\:(.)\)\?#', '\1?', $list);
static $callback_2;
if (!isset($callback_2)) {
$callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');
}
$list = preg_replace_callback('#\(\?\:((?:.\|)+.)\)#', $callback_2, $list);
}
[/Codebox]
修改后的代码:
[Codebox=javascript file=Untitled.js]if (!$recursed) {
// 1. 把 (?:a|b|c) 改写成 [abc]
$list = preg_replace('#\(\?\:(.)\)\?#', '\1?', $list);
static $callback_2;
if (!isset($callback_2)) {
$callback_2 = function ($matches) {
return '[' . str_replace('|', '', $matches[1]) . ']';
};
}
$list = preg_replace_callback('#\(\?\:((?:.\|)+.)\)#', $callback_2, $list);
}[/Codebox]