权限没有,则隐藏 function forum_list_access_filter($forumlist, $gid, $allow = 'allowread') { global $grouplist; if (empty($forumlist)) return array(); if (1 == $gid) return $forumlist; $forumlist_filter = $forumlist; $group = $grouplist[$gid]; foreach ($forumlist_filter as $fid => $forum) { if (empty($forum['accesson']) && empty($group[$allow]) || !empty($forum['accesson']) && empty($forum['accesslist'][$gid][$allow])) { unset($forumlist_filter[$fid]); } unset($forumlist_filter[$fid]['accesslist']); } return $forumlist_filter; } function forum_filter_moduid($moduids) { $moduids = trim($moduids); if (empty($moduids)) return ''; $arr = explode(',', $moduids); $r = array(); foreach ($arr as $_uid) { $_uid = intval($_uid); $_user = user_read($_uid); if (empty($_user)) continue; if ($_user['gid'] > 4) continue; $r[] = $_uid; } return implode(',', $r); } function forum_safe_info($forum) { //unset($forum['moduids']); return $forum; } function forum_filter($forumlist) { foreach ($forumlist as &$val) { unset($val['brief'], $val['announcement'], $val['seo_title'], $val['seo_keywords'], $val['create_date_fmt'], $val['icon_url'], $val['modlist']); } return $forumlist; } function forum_format_url($forum) { global $conf; if (0 == $forum['category']) { // 列表URL $url = url('list-' . $forum['fid'], '', FALSE); } elseif (1 == $forum['category']) { // 频道 $url = url('category-' . $forum['fid'], '', FALSE); } elseif (2 == $forum['category']) { // 单页 $url = url('read-' . trim($forum['brief']), '', FALSE); } if ($conf['url_rewrite_on'] > 1 && $forum['well_alias']) { if (0 == $forum['category'] || 1 == $forum['category']) { $url = url($forum['well_alias'], '', FALSE); } elseif (2 == $forum['category']) { // 单页 $url = ($forum['threads'] && $forum['brief']) ? url($forum['well_alias'] . '-' . trim($forum['brief']), '', FALSE) : url($forum['well_alias'], '', FALSE); } } return $url; } function well_forum_alias() { $forumlist = forum_list_cache(); if (empty($forumlist)) return ''; $key = 'forum-alias'; static $cache = array(); if (isset($cache[$key])) return $cache[$key]; $cache[$key] = array(); foreach ($forumlist as $val) { if ($val['well_alias']) $cache[$key][$val['fid']] = $val['well_alias']; } return array_flip($cache[$key]); } function well_forum_alias_cache() { global $conf; $key = 'forum-alias-cache'; static $cache = array(); // 用静态变量只能在当前 request 生命周期缓存,跨进程需要再加一层缓存:redis/memcached/xcache/apc if (isset($cache[$key])) return $cache[$key]; if ('mysql' == $conf['cache']['type']) { $arr = well_forum_alias(); } else { $arr = cache_get($key); if (NULL === $arr) { $arr = well_forum_alias(); !empty($arr) AND cache_set($key, $arr); } } $cache[$key] = empty($arr) ? '' : $arr; return $cache[$key]; } ?> $v = implode(",", $v); $temp[] = $v; } // 去掉重复的字符串,也就是重复的一维数组 $temp = array_unique($temp); // 再将拆开的数组重新组装 $output = array(); foreach ($temp as $k => $v) { if ($stkeep) $k = $starr[$k]; if ($ndformat) { $temparr = explode(",", $v); foreach ($temparr as $ndkey => $ndval) $output[$k][$ndarr[$ndkey]] = $ndval; } else $output[$k] = explode(",", $v); } return $output; } // 合并二维数组 如重复 值以第一个数组值为准 function array2_merge($array1, $array2, $key = '') { if (empty($array1) || empty($array2)) return NULL; $arr = array(); foreach ($array1 as $k => $v) { isset($v[$key]) ? $arr[$v[$key]] = array_merge($v, $array2[$k]) : $arr[] = array_merge($v, $array2[$k]); } return $arr; } /* * 对二维数组排序 两个数组必须有一个相同的键值 * $array1 需要排序数组 * $array2 按照该数组key排序 * */ function array2_sort_key($array1, $array2, $key = '') { if (empty($array1) || empty($array2)) return NULL; $arr = array(); foreach ($array2 as $k => $v) { if (isset($v[$key]) && $v[$key] == $array1[$v[$key]][$key]) { $arr[$v[$key]] = $array1[$v[$key]]; } else { $arr[] = $v; } } return $arr; } ?>爬虫

推荐几款优秀的网络爬虫工具

1.前言 一、 什么是网络爬虫? 网络爬虫又名“网络蜘蛛”,是通过网页的链接地址来寻找网页,从网站某一个页面开始,读取网页的内容&#xff0

7月前1080

探寻爬虫世界01:HTML页面结构

文章目录 一、引言 (一)背景介绍:选择爬取51job网站数据的原因 (二)目标与需求明确:爬取51job网站数据的目的与用户需求 二、网页结构探索 (一)51job网页结构分析 1、页面组成:了解51job网站的整体结构 2、页面元素:探

7月前760

python爬虫 爬取网页图片

目录 一:爬虫基础 二:安装html解析的python工具 三:爬取网页图片 一:爬虫基础 爬虫基本过程: 1.请求标头 h

7月前840

Python爬虫突破某360查询网站反爬验证码

某360查询网址同一ip频繁访问的话会弹出验证码, 该验证码特点:get获取的验证码图片和网页展现的不一致(所以无法通过图像识别破解);该验证码是针对ip,输入验证码后会给出一个大概一天有效期的cookie,在此阶段可以大量频繁访问了。

7月前1050

爬虫漫游指南:无头浏览器puppeteer的检测攻防

1. 引言 许多爬虫初学者在接触到无头浏览器的时候都会有一种如获至宝的感觉,仿佛看到了爬虫的终极解决方案。无论是所有爬虫教程中都会出现的PhantomJS、Selenium,亦或是相对冷门的Nightmare,到后来居上的Puppetee

7月前1010

爬虫进阶路程5——无头浏览器的坑

本来以为经历前面四道坑,算是走到了反爬的顶端,没想到不到三个月再次倒下了,因为之前的爬虫程序突然被反爬了,怎都拿不到数据,一开始以

7月前910

爬虫实战 -- QQ空间自动点赞!太强了呀!

前景提要 因为我周围的小伙伴们天天跟我说的最多的一句话就是:空间第一条点赞。 所以说我还不如直接做一个自动点赞的代码呢,免得天天催我点赞。 PS:如有需要Python学习

7月前580

输入qq号强制进空间_Python爬虫实战:QQ空间全自动点赞工具

QQ空间自动点赞前景提要目标确定分析介绍登陆获取cookie寻找XML寻找可变参数获取第一个空间动态寻找点赞所需的URL寻找可变参数功能提升到秒赞全部代码最后还是希望你们能给我点一波小小的关注。奉上自己诚挚的爱心私信小编01即可获取大量Py

7月前900

python 爬虫之路教程

原址摘要: From:https:piaosanlang.gitbooks.iospiderscontent 爬虫入门初级篇 IDE 选择: PyCharm(推

7月前720

python爬虫之scrapy

scrapy安装 在windows下,在dos中运行pip install Scrapy报错 采用pip安装,安装时可能会出现安装错误Microsoft Visual C 14.0 is re

7月前1210

python 爬虫基础学习

原址摘要: From:https:piaosanlang.gitbooks.iospiderscontent 爬虫入门初级篇 IDE 选择: PyCharm(推

7月前1050