html 格式,其中 A 是栏目的名称或 男_金 格式 $url_suffix = isset($_ENV['_config']['url_suffix']) ? $_ENV['_config']['url_suffix'] : '.html'; $url_suffix_len = strlen($url_suffix); if(substr($uri, -$url_suffix_len) == $url_suffix) { $filename = substr($uri, 0, -$url_suffix_len); // 不跳过任何 kangxi 前缀的 URL,让系统先处理,处理不了再让我们处理 // 检查 $cfg['cate_arr'] 是否存在 if(isset($cfg['cate_arr']) && !empty($cfg['cate_arr'])) { $cate_arr = array_flip($cfg['cate_arr']); // 检查是否是分类目录下的文件 $u_arr = explode('/', $filename); $file_basename = end($u_arr); $cate_path = implode('/', array_slice($u_arr, 0, -1)); // URL 解码 $file_basename = urldecode($file_basename); $cate_path = urldecode($cate_path); // 查找分类 $cate_id = 0; if(empty($cate_path)) { // 根目录下的文件,检查是否直接是分类别名 if(isset($cate_arr[$file_basename])) { $cate_id = $cate_arr[$file_basename]; } } elseif(isset($cate_arr[$cate_path])) { // 分类目录下的文件,匹配分类 $cate_id = $cate_arr[$cate_path]; } if($cate_id > 0) { $_GET['control'] = 'cate'; $_GET['action'] = 'index'; $_GET['cid'] = $cate_id; // 获取筛选分类信息 if(!isset($GLOBALS['filter_arr'])) { $fiter_arr = $this->filter->get_filter_html_by_cid($cate_id); $GLOBALS['filter_arr'] = &$fiter_arr; } $filter_arr = &$GLOBALS['filter_arr']; // 检查是否是数字 ID,处理内容页面 if(is_numeric($file_basename)) { // 是数字 ID,设置为内容页面 $_GET['control'] = 'show'; $_GET['action'] = 'index'; $_GET['id'] = (int)$file_basename; // 保留 cid 参数,show 控制器需要它来获取分类信息 return; } else if(strpos($file_basename, '_') !== FALSE) { // 检查是否是 男_金 格式 list($xmx, $wuxing) = explode('_', $file_basename, 2); // 设置性别和五行分类参数 $_GET['xmx'] = $xmx; $_GET['wuxing'] = $wuxing; // 移除 fids 参数,避免与分类插件冲突 unset($_GET['fids']); return; } else { // 查找与文件名匹配的筛选值 $found = false; foreach($filter_arr as $index => $filter) { foreach($filter['filterlist'] as $fid => $fname) { // 检查名称匹配 if($file_basename == $fname) { // 生成 fids 参数 $fids = array_fill(0, 5, 0); $fids[$index] = $fid; $_GET['fids'] = implode('_', $fids); $found = true; return; } // 检查别名匹配 $filter_info = $this->filter->get($fid); if($filter_info && $file_basename == $filter_info['alias']) { // 生成 fids 参数 $fids = array_fill(0, 5, 0); $fids[$index] = $fid; $_GET['fids'] = implode('_', $fids); $found = true; return; } } } // 如果没有找到匹配的筛选值,不返回 404,让系统继续处理 } } } }// 检查是否是黄历插件的URL,直接在最开始处理,避免被分类处理拦截 $url_suffix = $_ENV['_config']['url_suffix']; $url_suffix_len = strlen($url_suffix); // 检查cfg是否存在 if (isset($cfg['le_hl'])) { // 动态获取插件后台设置的黄历前缀 $plugin_prefix = isset($cfg['le_hl']['day_prefix']) ? $cfg['le_hl']['day_prefix'] : 'huangli'; // 支持插件设置的前缀和默认的 hl 前缀 $possible_prefixes = array('hl', $plugin_prefix); // 检查是否匹配黄历插件的URL模式 foreach ($possible_prefixes as $prefix) { $prefix_len = strlen($prefix); // 处理首页 if($uri == $prefix || $uri == $prefix . '/' || ($url_suffix_len > 0 && ($uri == $prefix . $url_suffix || $uri == $prefix . '/' . $url_suffix))) { $_GET['control'] = 'hl'; $_GET['action'] = 'index'; return; }elseif(substr($uri,0,$prefix_len+1)=="{$prefix}/"){ // 处理带后缀的URL $newurl = $uri; if ($url_suffix_len > 0 && substr($uri, -$url_suffix_len) == $url_suffix) { $newurl = substr($uri, 0, -$url_suffix_len); } $_GET['control'] = 'hl'; if(substr($newurl, $prefix_len+1) == 'caishen'){ $_GET['action'] = 'caishen'; return; }elseif (substr($newurl, $prefix_len+1) == 'jishi'){ $_GET['action'] = 'jishi'; return; } //具体日期的黄历 $pattern = '/^'.$prefix.'\/(\d+)-(\d+)-(\d+)$/'; preg_match($pattern, $newurl, $mat); if(isset($mat[3]) && $mat[3]){ $_GET['action'] = 'index'; $_GET['nian'] = $mat[1]; $_GET['yue'] = $mat[2]; $_GET['ri'] = $mat[3]; return; } //年月的吉日 $pattern = '/^'.$prefix.'\/(\d+)-(\d+)$/'; preg_match($pattern, $newurl, $mat); if(isset($mat[2]) && $mat[2]){ $_GET['action'] = 'yue'; $_GET['nian'] = $mat[1]; $_GET['yue'] = $mat[2]; return; } //某年日历 $pattern = '/^'.$prefix.'\/(\d+)-rili$/'; preg_match($pattern, $newurl, $mat); if(isset($mat[1]) && $mat[1]){ $_GET['action'] = 'nian_rili'; $_GET['nian'] = $mat[1]; return; } //某年节气详情 $pattern = '/^'.$prefix.'\/(\d+)-(\w+)$/'; preg_match($pattern, $newurl, $mat); if(isset($mat[2]) && $mat[2]){ $_GET['action'] = 'nian_jieqi'; $_GET['nian'] = $mat[1]; $_GET['jieqipy'] = $mat[2]; return; } //某年某月某吉日(结婚) $pattern = '/^'.$prefix.'\/(\d+)-(\d+)-(\w+)$/'; preg_match($pattern, $newurl, $mat); if(isset($mat[3]) && $mat[3]){ $_GET['action'] = 'yuejiri'; $_GET['nian'] = $mat[1]; $_GET['yue'] = $mat[2]; $_GET['eventpy'] = $mat[3]; return; } //某年某月某吉日(结婚)带生肖 $pattern = '/^'.$prefix.'\/(\d+)-(\d+)-([a-zA-Z]+)-([a-zA-Z]+)$/'; preg_match($pattern, $newurl, $mat); if(isset($mat[4]) && $mat[4]){ $_GET['action'] = 'yuejiri'; $_GET['nian'] = $mat[1]; $_GET['yue'] = $mat[2]; $_GET['eventpy'] = $mat[3]; $_GET['sx'] = $mat[4]; return; } //2025-3-21-jiehun.html 某日某黄历是否合适 $pattern = '/^'.$prefix.'\/(\d+)-(\d+)-(\d+)-(\w+)$/'; preg_match($pattern, $newurl, $mat); if(isset($mat[4]) && $mat[4]){ $_GET['action'] = 'eventno'; $ strlen($cfg['link_comment_pre']); if(substr($uri, 0, $len) == $cfg['link_comment_pre']) { $url_suffix = isset($_ENV['_config']['url_suffix']) ? $_ENV['_config']['url_suffix'] : '.html'; $url_suffix_len = strlen($url_suffix); if(substr($uri, -$url_suffix_len) == $url_suffix) { $newurl = substr($uri, $len, -$url_suffix_len); $u_arr = explode('_', $newurl); if(count($u_arr) > 1) { $_GET['control'] = 'comment'; $_GET['action'] = 'index'; $_GET['cid'] = $u_arr[0]; $_GET['id'] = $u_arr[1]; //分页 if(isset($u_arr[2])){ if($this->integer_check($u_arr[2])){ $_GET['page'] = $u_arr[2]; }else{ core::error404(); } } return true; } } } return false; } //首页分页URL解析 protected function index_page_url($cfg = array(), $uri = ''){ $url_suffix = isset($_ENV['_config']['url_suffix']) ? $_ENV['_config']['url_suffix'] : '.html'; $url_suffix_len = strlen($url_suffix); if(substr($uri, 0, 6) == 'index_' && substr($uri, -$url_suffix_len) == $url_suffix) { $newurl = substr($uri, 0, -$url_suffix_len); preg_match("/^index_(\d+)$/i", $newurl, $mat); if( isset($mat[1]) ){ if(!$this->integer_check($mat[1])){core::error404();} $_GET['control'] = 'index'; $_GET['action'] = 'index'; $_GET['mid'] = 2; $_GET['page'] = $mat[1]; return true; } preg_match("/^index_(\d+)_(\d+)$/i", $newurl, $mat); if( isset($mat[2]) ){ if(!$this->mid_check($mat[1], $cfg)){core::error404();} if(!$this->integer_check($mat[2])){core::error404();} $_GET['control'] = 'index'; $_GET['action'] = 'index'; $_GET['mid'] = $mat[1]; $_GET['page'] = $mat[2]; return true; } } return false; } //热门标签 全部标签 URL解析 protected function tag_like_url($cfg = array(), $uri = ''){ // 热门标签 if($uri == $cfg['link_tag_top'] || $uri == $cfg['link_tag_top'].'/') { if($uri == $cfg['link_tag_top']){ http_location($cfg['weburl'].$uri.'/', '301'); } $_GET['control'] = 'tag'; $_GET['action'] = 'top'; return true; } //全部标签 if(substr($uri, 0, 8) == 'tag_all/' || substr($uri, 0, 7) == 'tag_all'){ if(substr($uri, -1) != '/'){ http_location($cfg['weburl'].$uri.'/', '301'); } $u_arr = explode('/', $uri); if($u_arr[0] != 'tag_all'){ core::error404(); }else{ unset($u_arr); } $_GET['control'] = 'tag'; $_GET['action'] = 'all'; $newurl = substr($uri, 8, -1); if($newurl){ if(is_numeric($newurl) && $newurl > 0){ $_GET['mid'] = 2; $_GET['page'] = $newurl; }else{ $u_arr = explode('_', $newurl); if(count($u_arr) > 2){core::error404();} if(!$this->mid_check($u_arr[0], $cfg)){core::error404();} $_GET['mid'] = $u_arr[0]; if(is_numeric($u_arr[1]) && $u_arr[1] > 0){ $_GET['page'] = $u_arr[1]; }else{ core::error404(); } } } return true; } return false; } //用户中心URL解析 protected function user_url($cfg = array(), $uri = ''){ $url_suffix = isset($_ENV['_config']['url_suffix']) ? $_ENV['_config']['url_suffix'] : '.html'; $url_suffix_len = strlen($url_suffix); $newurl = substr($uri, 0, -$url_suffix_len); if( preg_match('/^user-[a-z0-9-]+$/i', $newurl) || preg_match('/^my-[a-z0-9-]+$/i', $newurl) ){ $u_arr = explode('-', $newurl); if(count($u_arr) > 1) { $_GET['control'] = $u_arr[0]; array_shift($u_arr); $_GET['action'] = $u_arr[0]; array_shift($u_arr); $num = count($u_arr); for($i=0; $i<$num; $i+=2){ isset($u_arr[$i+1]) && $_GET[$u_arr[$i]] = $u_arr[$i+1]; } return true; } } return false; } //属性内容URL解析 protected function flags_url($cfg = array(), $uri = ''){ if(substr($uri, 0, 6) == 'flags/'){ if(substr($uri, -1) == '/'){$uri = substr($uri, 0,-1);} $u_arr = explode('/', $uri); if( isset($u_arr[1]) ){ $_GET['control'] = 'flags'; $_GET['action'] = 'index'; $u_arr_1 = explode('_', $u_arr[1]); if(isset($u_arr_1[1])){ $_GET['mid'] = $u_arr_1[0]; if(!$this->mid_check($_GET['mid'], $cfg)){core::error404();} $_GET['flag'] = $u_arr_1[1]; }else{ $_GET['mid'] = 2; $_GET['flag'] = $u_arr[1]; } if(!isset($this->cms_content->flag_arr[$_GET['flag']])){core::error404();} //分页 if( isset($u_arr[2]) ){ $page = $this->page_check($u_arr[2]); if($page){ $_GET['page'] = $page; }else{ core::error404(); } } return true; } } return false; } //个人空间URL解析 protected function space_url($cfg = array(), $uri = ''){ $len = strlen($cfg['link_space_pre']); if(substr($uri, 0, $len) == $cfg['link_space_pre']) { $len2 = strlen($cfg['link_space_end']); if(substr($uri, -$len2) == $cfg['link_space_end']) { $newurl = substr($uri, $len, -$len2); $u_arr = explode('/', $newurl); if( $this->integer_check($u_arr[0]) ){ $_GET['control'] = 'space'; $_GET['action'] = 'index'; $_GET['uid'] = $u_arr[0]; //分页 if( isset($u_arr[1]) ){ $page = $this->page_check($u_arr[1]); if($page){ $_GET['page'] = $page; }else{ core::error404(); } } } } } return false; } //笔画URL解析 protected function bihua_url($cfg = array(), $uri = ''){ // 匹配bihua/数字画.html格式的URL if(substr($uri, 0, 6) == 'bihua/') { $url_suffix = $_ENV['_config']['url_suffix']; $url_suffix_len = strlen($url_suffix); // 检查URL后缀 if(substr($uri, -$url_suffix_len) == $url_suffix) { $newurl = substr($uri, 6, -$url_suffix_len); // 提取笔画数,支持URL编码的"画"字 $newurl = urldecode($newurl); preg_match('/^(\d+)画$/', $newurl, $mat); if(isset($mat[1])) { // 使用bihua控制器来处理 $_GET['control'] = 'bihua'; $_GET['action'] = 'index'; $_GET['bihua'] = $mat[1]; return true; } } } return false; } //动态URL解析 protected function other_url(){ if(isset($_GET['u'])) { $u = $_GET['u']; unset($_GET['u']); }elseif(!empty($_SERVER['PATH_INFO'])) { $u = R('PATH_INFO', 'S'); }else{ $_GET = array(); $u = R('QUERY_STRING', 'S'); } //清除URL后缀 $url_suffix = C('url_suffix'); if($url_suffix) { $suf_len = strlen($url_suffix); if(substr($u, -($suf_len)) == $url_suffix) $u = substr($u, 0, -($suf_len)); } $uarr = explode('&', $u); $u = $uarr[0]; if(count($uarr) > 1){ array_shift($uarr); foreach ($uarr as $v){ $varr = explode('=', $v); $_GET[$varr[0]] = isset($varr[1]) ? urldecode($varr[1]) : ''; } } unset($uarr); $uarr = explode('-', $u); if(count($uarr) < 2) {core::error404();} //控制器 if(isset($uarr[0])) { $_GET['control'] = empty($uarr[0]) ? 'index': strtolower($uarr[0]); array_shift($uarr); } //方法 if(isset($uarr[0])) { $_GET['action'] = empty($uarr[0]) ? 'index': strtolower($uarr[0]); array_shift($uarr); } //伪静态下 访问动态首页、内容页URL、分类URL、标签URL 则进入404页面 $dis_control = array('index', 'show', 'cate', 'tag'); if( in_array($_GET['control'], $dis_control) && $_GET['action'] == 'index'){ core::error404(); } //参数 $num = count($uarr); for($i=0; $i<$num; $i+=2){ isset($uarr[$i+1]) && $_GET[$uarr[$i]] = $uarr[$i+1]; } return false; } //分页参数验证 private function page_check($param){ if(empty($param)){ return false; }else{ preg_match('/^page_([1-9]\d*)$/', $param, $mat); if(isset($mat[1])){ return $mat[1]; }else{ return false; } } } //正整数参数验证 private function integer_check($param){ if(empty($param)){ return false; }elseif( preg_match($this->integer_pattern, $param) ){ return true; }else{ return false; } } //模型ID验证(不含单页) private function mid_check($mid, $cfg){ if($mid > 1 && isset($cfg['table_arr'][$mid])){ return true; }else{ return false; } } //部首URL解析 protected function bushou_url($cfg = array(), $uri = ''){ // 匹配bushou/格式的URL(部首列表页) if($uri == 'bushou/') { // 使用cate控制器来处理,对应分类ID为21 $_GET['control'] = 'cate'; $_GET['action'] = 'index'; $_GET['cid'] = 21; return true; } // 匹配bushou/部首.html格式的URL if(substr($uri, 0, 7) == 'bushou/') { $url_suffix = $_ENV['_config']['url_suffix']; $url_suffix_len = strlen($url_suffix); // 检查URL后缀 if(substr($uri, -$url_suffix_len) == $url_suffix) { $newurl = substr($uri, 7, -$url_suffix_len); // 提取部首,支持URL编码 $newurl = urldecode($newurl); if(!empty($newurl)) { // 使用bushou控制器来处理 $_GET['control'] = 'bushou'; $_GET['action'] = 'index'; $_GET['bushou'] = $newurl; return true; } } } return false; } //拼音URL解析 protected function pinyin_url($cfg = array(), $uri = ''){ // 匹配pinyin/拼音.html格式的URL if(substr($uri, 0, 7) == 'pinyin/') { $url_suffix = $_ENV['_config']['url_suffix']; $url_suffix_len = strlen($url_suffix); // 检查URL后缀 if(substr($uri, -$url_suffix_len) == $url_suffix) { $newurl = substr($uri, 7, -$url_suffix_len); // 提取拼音,支持URL编码 $newurl = urldecode($newurl); if(!empty($newurl)) { // 使用pinyin控制器来处理 $_GET['control'] = 'pinyin'; $_GET['action'] = 'index'; $_GET['pinyin'] = $newurl; return true; } } } return false; } //康熙字典URL解析 protected function kangxi_url($cfg = array(), $uri = ''){ if(substr($uri , 0 , 7) == 'kangxi/' && strlen($uri) > 7){ $url_suffix = $_ENV['_config']['url_suffix']; $url_suffix_len = strlen($url_suffix); if(substr($uri, -$url_suffix_len) == $url_suffix) { $newurl = substr($uri, 0, -$url_suffix_len); $u_arr = explode('/', $newurl); if(!isset($u_arr[1])){ core::error404(); } if(isset($u_arr[2])){ $nannv_pinyin_to_char = array('nan' => '男', 'nv' => '女'); $wuxing_pinyin_to_char = array('jin' => '金', 'mu' => '木', 'shui' => '水', 'huo' => '火', 'tu' => '土'); $nannv_value = $u_arr[1]; $wuxing_value = $u_arr[2]; $valid_nannv = false; $valid_wuxing = false; if(isset($nannv_pinyin_to_char[$nannv_value])) { $nannv_value = $nannv_pinyin_to_char[$nannv_value]; $valid_nannv = true; } if(isset($wuxing_pinyin_to_char[$wuxing_value])) { $wuxing_value = $wuxing_pinyin_to_char[$wuxing_value]; $valid_wuxing = true; } if(!$valid_nannv || !$valid_wuxing) { core::error404(); } $_GET['control'] = 'kangxi'; $_GET['action'] = 'index'; $_GET['nannv'] = $nannv_value; $_GET['wuxing'] = $wuxing_value; return true; } } } return false; } } Lecms 3.0.3 lang[error]

lang[error_info]

lang[error_line]

lang[basic_trace]

lang[program_flow]

SQL

$_GET

$_POST

$_COOKIE

lang[include_file]

lang[other_trace]