模块二开
mokuai
TSCMS 网站常用函数大全
一、安全过滤类
safe_replace($string)
安全过滤函数,替换特殊字符(空格、引号、尖括号、反斜杠等)。用于后台接收用户输入时。返回过滤后的字符串。
$safeStr = safe_replace($input);
remove_xss($html)
XSS 过滤函数,清除 JavaScript、VBScript、on事件等危险代码。用于富文本内容过滤。
$clean = remove_xss($content);
二、字符串处理类
str_cut($string, $length, $dot='...', $charset='utf-8')
UTF-8 安全截断字符串,自动追加后缀。支持 UTF-8 和 GBK 编码。
{str_cut($vo.title, 30)} <!-- 模板中使用 -->
$short = str_cut($text, 100); <!-- PHP中使用 -->getStrlen($str)
获取字符串长度(UTF-8 安全)。如果传入数组则返回数组长度。
highlight($content, $keyword, $length=60)
搜索结果高亮显示,将关键词用红色字体标记。
{highlight($vo.title, $keyword)} <!-- 模板中使用 -->random($length, $chars='0123456789')
产指定长度的随机字符串,默认数字,可指定字符集。
$code = random(6, '0123456789'); // 6位随机数字
create_randomstr($lenth=6)
生成安全的随机字符串(字母+数字,不含0/o)。用于密码加密盐值。
parse_attr($value)
配置值解析成数组。支持换行、逗号、分号分隔,格式 键:值 可转换为关联数组。
// "男:1\n女:2" → ['男'=>'1', '女'=>'2'] $options = parse_attr($configStr);
三、类型转换类
string2array($data)
将字符串转换为数组。支持 array() 格式字符串和 JSON 字符串。
$arr = string2array($settingStr);
array2string($data, $isformdata=1)
将数组转换为 JSON 字符串(addslashes 处理)。
array2json($array)
数组转 JSON(中文不转码 Unicode)。
二、内容与栏目类
getCategory($catid, $field='', $newCache=false)
获取栏目信息。返回栏目数组或指定字段的值。
$cat = getCategory(1); // 全部信息 $name = getCategory(1, 'catname'); // 只取栏目名 $url = category(1); // 快捷获取URL
category($catid, $field='url')
快速获取栏目信息。默认获取 URL。
categoryCache()
获取栏目全部缓存(以 catid 为键的数组)。单例模式。
$cats = categoryCache();
foreach ($cats as $c) {
echo $c['catname'];
}getChildId($catid)
获取指定栏目的所有子栏目ID列表(逗号分隔字符串)。
getParentId($catid)
获取指定栏目的所有父栏目ID列表(逗号分隔字符串)。
getArticle($catid, $id, $modelid=0, $moreinfo=0)
获取文章详细信息,支持联查副表。
$article = getArticle(1, 5, 0, 1);
getArticleByIds($ids, $catid=0, $modelid=0, $moreinfo=0)
通过 ID 批量获取文章。支持逗号分隔字符串或数组。
$list = getArticleByIds('1,3,5', 0, 2, 1);getContentUrl($catid, $id)
获取文章 URL。
getpage($catid, $field='*', $ishtml='1')
获取单页面数据。
$content = getpage(5, 'content'); // 获取catid=5的单页面内容
getUrlrule($module, $type)
获取 URL 规则。type: 0=栏目, 1=内容, 2=单页, 3=标签。
三、URL 生成类
buildCatUrl($catid, $url='', $suffix=true, $domain=false, $page=0)
生成栏目 URL(支持 URL 规则)。
$url = buildCatUrl(1); // 栏目URL $url = buildCatUrl(1, '', true, false, 2); // 分页URL
buildContentUrl($catid, $id, $suffix=true, $domain=false)
生成内容详情 URL(支持 URL 规则和时间变量)。
$url = buildContentUrl(1, 5);
buildTagUrl($tagid, $tag=[])
生成标签详情页 URL。
catpos($catid, $symbol=' > ')
生成栏目面包屑导航,返回 HTML 格式。
位置:{catpos($catid)} <!-- 模板中输出面包屑 -->siteurl($full=true)
获取站点 URL。
getDomain($port=0)
获取当前站点域名(含协议)。
四、SEO 类
seo($catid='', $title='', $description='', $keyword='')
生成 SEO 信息数组,用于页面标题、关键词、描述。优先级:传入值 > 栏目设置 > 站点设置。
{$SEO = seo($catid, $title, $description, $keyword)}
<title>{$SEO.title}</title>
<meta name="keywords" content="{$SEO.keyword}">
<meta name="description" content="{$SEO.description}">五、图片与文件处理类
getImg($str, $num=1)
从 HTML 内容中提取第 N 张图片的路径。默认提取第一张。
{getImg($content)} <!-- 提取第一张图片路径 -->thumb($filename, $width, $height=null, $type=3)
自动生成指定尺寸的缩略图,返回缩略图路径。type 类型:1=等比例, 2=填充, 3=居中裁剪, 4=左上裁剪, 5=右下裁剪, 6=固定尺寸。
<img src="{thumb($vo.thumb, 200, 150)}">
<img src="{thumb($vo.image, 300)}"> <!-- 等比缩放高度自动 -->saveRemoteImages($content, $saveDir='upload/image/')
下载内容中的远程图片到本地,并替换 HTML 中的 src 路径。自动写入附件表。
fetchRemoteImage($url)
通过 cURL 获取远程图片内容(二进制数据)。
getFile($id, $name='')
获取附件信息。
六、安全与验证类
check_mobile($mobile)
验证手机号格式是否正确。返回 true/false。
check_email($email)
验证邮箱格式是否正确。
check_password($password, $min, $max)
验证密码长度是否符合要求。
check_tel($tel)
验证固定电话格式。
check_url($url)
校验是否为合法网址。
ip()
获取客户端真实 IP 地址。
in_wechat()
判断当前访问是否来自微信内置浏览器。
七、加密与认证类
password($password, $encrypt='')
密码加密。不传 encrypt 时返回 ['password'=>..., 'encrypt'=>...];传 encrypt 时返回字符串。
$pwd = password('123456');
// $pwd['password'] 和 $pwd['encrypt']
$check = password('123456', $storedEncrypt);
// 对比 $check === $storedPassworddata_auth_sign($data)
数组数据签名认证。对数组排序后用 http_build_query + SHA1 生成签名,用于 Session 防篡改。
is_admin_login()
检测管理员是否登录。返回管理员ID(0=未登录)。
is_user_login()
检测前台会员是否登录。返回会员ID(0=未登录)。
八、验证码类(短信/邮箱)
sendEmailCode($email, $code=null, $event='default')
发送邮箱验证码。自动从配置读取 SMTP 设置。
checkEms($email, $code, $event='default')
校验邮箱验证码。返回 ['code'=>1/0, 'msg'=>'...']。验证通过后自动删除记录。
sendsms($key, $mobile, $code='', $event='default')
发送短信验证码。需先安装并配置短信模块。
checkSms($mobile, $code, $event='default')
校验短信验证码。支持频率限制和错误次数限制。
send_email($email, $title, $content, $config=null)
使用 PHPMailer 发送邮件。config 不传则自动读取系统配置。
九、数组操作类
list_to_tree($list, $pk='id', $pid='pid', $child='children', $root=0)
把平铺的数据集转换成树形结构(用于无限级分类)。
$tree = list_to_tree($categoryList, 'catid', 'parentid', 'children', 0);
tree_to_list($tree, $child='children', $order='id', &$list=[])
将树形结构还原成平铺列表。
arraySort($array, $keys, $sort='asc')
按指定字段对数组排序(asc/desc)。
change_array_key($array, $name)
重置数组键值,指定某列作为新键值。
十、系统与缓存类
getConfig($key='')
获取系统配置。key 为空返回全部配置,指定 key 返回单项。
$siteName = getConfig('site_name'); // 站点名称
$allConfig = getConfig(); // 全部配置clear_cache($directory=null)
清除系统缓存(runtime/cache 目录)。
module_exists($module)
判断模块是否已安装。
if (module_exists('pay')) { /* 支付功能可用 */ }table_exists($table)
判断数据表是否存在(不传前缀)。
get_table_fields($table)
获取表字段列表(有缓存)。
十一、表单与钩子类
buildForm($formid, $options=[], $onlyForm=1)
自动生成表单 HTML。支持验证码、未登录检测、文件上传。$options 支持 class、btntext、show_tips。
{$form = buildForm(5)}
<div class="form-box">{$form}</div>build_form_field($field, $showTips=true)
渲染单个字段的 HTML。支持 text/textarea/radio/select/checkbox/image/file 等类型。
formUrl($formid)
获取表单提交地址。
hook($tag, $params=null, $once=false, $return=false)
触发业务钩子。$once=true 只取一个有效返回值;$return=true 返回钩子返回值。
十二、其他工具类
showmessage($msg='操作成功', $url='', $time=3, $vars=[])
跳转提示页面。模板文件为 templates/{style}/content/msg.html。
showmessage('操作成功', url('index'), 3);export_excel($data, $title)
数组导出 XLS 格式 Excel 文件。
sizecount($filesize, $precision=2)
转换字节数为可读单位(B/KB/MB/GB/TB)。
format_bytes($size, $delimiter='')
格式化字节大小,同上。
insert_log($info, $module='admin', $action='')
保存后台用户操作日志。
insert_user_log($info, $module='admin', $action='')
保存前台用户操作日志。
_static($path='', $type='', $debug=0)
静态资源快捷调用,自动补全路径并添加版本号。
<link rel="stylesheet" href="{_static('css/style.css')}">
<script src="{_static('js/app.js')}"></script>https_request($url, $data=null)
HTTP/HTTPS 请求(cURL 封装)。data 为空时发送 GET 请求,否则 POST。
filter($catid, $field, $total='全部', $extData='')
获取栏目筛选字段的选项(支持 radio/select/checkbox/number 类型),自动维护 URL 参数。
{foreach filter($catid, 'color') as $opt}
<a href="{$opt.url}" class="{if $opt.active}active{/if}">{$opt.title}</a>
{/foreach}layuiTimeformat($format)
将 PHP 时间格式(如 Y-m-d H:i:s)转换为 layui 时间格式(如 y-MM-dd HH:mm:ss)。
template_style($siteid=1)
获取当前模板风格名称(如 'default')。
template_list($module='', $name='', $siteid='')
获取模板文件列表。
getSubmenu($menuid)
获取后台子菜单列表。
getBrothermenu($menuid)
获取后台兄弟菜单列表。
getMenuidByModule($module, $controller, $action)
通过模块/控制器/方法获取菜单ID。
十三、文件目录操作
位于 application/dir.func.php:
| 函数 | 说明 |
|---|---|
| dir_path($path) | 转化反斜杠为正斜杠,末尾加/ |
| dir_create($path, $mode=0777) | 递归创建目录 |
| dir_copy($fromdir, $todir) | 递归复制目录 |
| dir_list($path, $exts='', $list=[]) | 列出目录下所有文件 |
| dir_delete($dir) | 递归删除目录 |
| dir_tree($dir, $parentid=0, $dirs=[]) | 目录树列表 |
十四、API 辅助函数
位于 application/api/api_helper.php:
| 函数 | 说明 |
|---|---|
| api_image_url($path) | 补全图片路径为完整 URL |
| api_process_rich_text($content) | 处理富文本图片路径(相对→绝对) |
| api_is_image_field($field, $modelFieldList) | 判断是否为图片字段 |
| api_get_model_image_fields($modelid) | 获取模型的所有图片字段列表 |
| api_process_item(&$item, $modelid) | 处理单条数据的图片路径 |
| api_process_list(&$list, $modelid) | 批量处理列表数据的图片路径 |
| api_check_token($token) | 校验 API 访问令牌 |



