适用版本:跃而起开发版V1.5.7+
适用范围:全站任意地方均可使用。
标签说明:采用更为直接的方法将当前标签内容使用指定函数进行特定处理。
因为该文件设定为更新不覆盖,所以该文件不会通过在线更新推送,需要用户手动进行创建
创建方法:在站点根目录/config/文件夹下新建function.php文件,文件默认内容如下:
<?php /** * @copyright (C)2022 LiuXiaoBai * @author LiuXiaoBai * @email [email protected] * @date 2022年10月23日 * 个人扩展函数可编写到本文件中,升级不会覆盖 */ // 测试个人扩展函数 function test($str){ return '哎呦真的不错哟~'; }
例子:使用自定义函数隐藏手机号中间4位
先在config/function.php文件中编写隐藏手机号中间4位的函数
// 隐藏手机号中间4位 function test1($phone){ return substr_replace($phone, '****', 3, 4); }
然后在相关标签中使用
{jsyearqi:list}
[list:ext_phone fun=test1]
{/jsyearqi:list}
如果函数有多个参数需要调用,则使用:
[list:ext_phone fun=test1('1',###)]
表示test函数传入两个参数,每个参数用逗号分割,这里第一个参数是1,第二个参数是前面要输出ext_phone的标签内容,因为该标签内容是第二个参数,因此需要用###标识位置,你可以理解为###就是该标签自身内容
注意:多个参数之间不能存在空格,否则会被系统过滤,例如写成test1('1', ###),这里###前面存在空格,就会被过滤为test1('1'),也就是空格后面的参数会丢失,这是一个需要注意的地方
如果前面输出的标签内容在后面定义的函数的第一个参数,则可以直接使用:
[list:ext_phone fun=test1('1')]
虽然也可以使用:
[list:ext_phone fun=test1(###,'1')]
但完全没用这个必要
还可以支持多个函数过滤,多个函数之间用“|”分割即可,理论上无数量限制,例如:
[list:ext_phone fun=test|test2|test...]
或者
[list:ext_phone fun=test|test2('1',###)|test...]
函数会按照从左到右的顺序依次调用。
除了自定义函数外,还可以直接使用内置函数,例如:
[list:ext_phone fun=md5]
[list:ext_phone fun=substr_replace(###,'****',3,4)]
[list:ext_phone fun=md5|strtoupper|substr(0,3)]
......
理论上大部分标签均可以使用fun来调节,不限于上方例子,更多玩出花的用法还需自行探索,如果你发现了有趣的玩法欢迎投稿分享......
特殊函数
'phpinfo','symlink','readlin','getenv','putenv','dl','ini_get','ini_set','ini_alter','ini_restore','is_numeric','in_array','parse_str',
'extract','mb_parse_str','import_request_variables','glob','get_defined_vars','get_defined_constants','get_defined_functions','get_include_files'
代码执行函数
'eval','assert','preg_replace','create_function','call_user_func'
命令执行函数
'exec','passthru','proc_open','shell_exec','system','popen'
包含函数
'require','include','require_once','include_once'
文件操作函数
'copy','file_get_contents','file_put_contents','file','fopen','move_uploaded_file','readfile','rename','rmdir','unlink','delete'
内置公共函数
'create_dir','create_file','path_delete','dir_copy','upload','handle_upload','zip','unzip'