PHP 8.1 兼容性修改:使用 preg_replace_callback 重写输出内容
function rewrite_output($content) { $search = array( '/href="(./)?mod=(index|webdir|weblink|article|category|update|vipmulu|webthumb|archives|top|feedback|link)?"/', '/href="(./)?mod=webdir([&|&]cid=(\d+))?([&|&]page=(\d+))?"/', '/href="(./)?mod=article([&|&]cid=(\d+))?([&|&]page=(\d+))?"/', '/href="(./)?mod=update([&|&]days=(\d+))?([&|&]page=(\d+))?"/', '/href="(./)?mod=vipmulu([&|&]days=(\d+))?([&|&]page=(\d+))?"/', '/href="(./)?mod=archives([&|&]date=(\d+))?([&|&]page=(\d+))?"/', '/href="(./)?mod=search([&|&]type=(.+?))?([&|&]query=(.+?))?([&|&]page=(\d+))?"/', '/href="(./)?mod=siteinfo[&|&]wid=(\d+)"/', '/href="(./)?mod=diypage[&|&]pid=(\d+)"/', '/href="(./)?mod=rssfeed([&|&]type=(webdir|article))?([&|&]cid=(\d+))?"/', '/href="(./)?mod=sitemap([&|&]type=(webdir|article))?([&|&]cid=(\d+))?"/', );
$replace = array(
fn($t) => rewrite_module($t[2]),
fn($t) => rewrite_category('webdir', $t[3], $t[5]),
fn($t) => rewrite_category('article', $t[3], $t[5]),
fn($t) => rewrite_update($t[3], $t[5]),
fn($t) => rewrite_vipmulu($t[3], $t[5]),
fn($t) => rewrite_archives($t[3], $t[5]),
fn($t) => rewrite_search($t[3], $t[5], $t[7]),
fn($t) => rewrite_siteinfo($t[2]),
fn($t) => rewrite_diypage($t[2]),
fn($t) => rewrite_rssfeed($t[3], $t[5]),
fn($t) => rewrite_sitemap($t[3], $t[5]),
);
foreach($search as $k => $r) {
$content = preg_replace_callback($r, $replace[$k], $content);
}
return $content;
}
原文地址: https://www.cveoy.top/t/topic/O1n 著作权归作者所有。请勿转载和采集!