系统文件说明c_system_common.php辅助通用函数说明

该文件是一些通用的函数,可以在任意地方使用它们。共有59个函数,函数的参数和返回类型见文章下半部分。

GetScheme($array)

GetWebServer()

GetSystem()

GetPHPEngine()

GetPHPVersion()

AutoloadClass($classname)

Logs($s, $iserror = false)

RunTime()

GetEnvironment()

plugin_dir_url($file)

plugin_dir_path($file)

GetValueInArray($array, $name)

GetValueInArrayByCurrent($array, $name)

GetGuid()

GetVars($name, $type = 'REQUEST')

GetVarsByDefault($name, $type = 'REQUEST', $default = null)

GetDbName()

GetCurrentHost($blogpath, &$cookiespath)

GetHttpContent($url)

GetDirsInDir($dir)

GetFilesInDir($dir, $type)

SetHttpStatusCode($number)

Redirect($url)

Redirect301($url)

Http404()

Http500()

Http503()

Http304($filename, $time)

GetGuestIP()

GetGuestAgent()

GetRequestUri()

GetFileExt($f)

GetFilePermsOct($f)

GetFilePerms($f)

AddNameInString($s, $name)

DelNameInString($s, $name)

HasNameInString($s, $name)

JsonError4ShowErrorHook($errorCode, $errorString, $file, $line)

JsonError($errorCode, $errorString, $data)

JsonReturn($data)

RespondError($errorCode, $errorString)

ScriptError($faultString)

CheckRegExp($source, $para)

TransferHTML($source, $para)

CloseTags($html)

SubStrUTF8_Start($sourcestr, $start, $cutlength)

SubStrUTF8($sourcestr, $cutlength)

SubStrUTF8_Html($sourcestr, $cutlength)

RemoveBOM($s)

GetTimeZonebyGMT($z)

htmlspecialchars_array($array)

FilterCorrectName($s)

CheckCanBeString($obj)

utf84mb_filter(&$sql)

utf84mb_fixHtmlSpecialChars()

utf84mb_convertToUCS4($matches)

utf84mb_convertToUTF8($matches)

VerifyWebToken($wt,$wt_id)

CreateWebToken($wt_id,$time)

GetScheme($array) 得到请求的方法,未必准确,比如SERVER没有某项,或是端口改过的。参数是数组,返回 https:// 或者 http:// 字符串。系统使用示例:define('HTTP_SCHEME', GetScheme($_SERVER));

GetWebServer()获取服务器。返回使用的是什么服务器,比如Apache、Nginx什么的。系统使用示例:define('PHP_SERVER', GetWebServer());

GetSystem()获取操作系统,返回使用的是什么操作系统。系统使用示例:define('PHP_SYSTEM', GetSystem());

GetPHPEngine()获得PHP解析引擎,返回 HHVM 或者 PHP 对应的常量。系统使用示例:define('PHP_SYSTEM', GetSystem());

GetPHPVersion()获取PHP版本,返回字符串。系统使用示例:$system_environment = PHP_OS . '; ' .

GetValueInArray(

explode(' ', str_replace(array('Microsoft-', '/'), array('', ''), GetVars('SERVER_SOFTWARE', 'SERVER'))), 0

) . '; ' .

'PHP ' . GetPHPVersion() . (IS_X64 ? ' x64' : '') . '; ' .

$zbp->option['ZC_DATABASE_TYPE'] . '; ' . $ajax;

AutoloadClass($classname)自动加载类文件,参数为类名。改函数自动加载位于zb_system/function/lib/文件夹下和类名同名的php文件。系统使用示例:AutoloadClass('ZBlogPHP');

Logs($s, $iserror = false)记录日志,参数1是需要记录的字符串内容,参数2是可选的,表示是否是一个错误日志。区别在于如果参数2是true的话,创建文件时会添加 -error 文件名字。系统使用示例:    if (ZBlogException::$islogerror == true) {

Logs(var_export(array('Error', $errno, $errstr, $errfile, $errline), true), true);

}

RunTime()页面运行时间,返回数组,包含 time,query,memory,error 4个元素。系统使用示例:RunTime(); //

GetEnvironment()获得系统信息,返回的类似于“WINNT; Apache2.2.25; PHP 5.4.44; mysqli; curl”的字符串。

plugin_dir_url($file)通过文件获取应用的URL地址。这个函数通过文件名称参数。这个函数在系统中没有看到有使用。【代码暂不研究】

plugin_dir_path($file)通过文件获取应用目录路径。这个函数通过文件名称参数。

GetValueInArray($array, $name)通过key从数组获取数据

参数1:数组名

参数2:下表key

返回结果。 $array[$name]

GetValueInArrayByCurrent($array, $name)获取数组中的当前元素数据。参数一样,结果通过调用上面那个函数返回。

GetGuid()获得GUID。uniqid函数获得当前时间微秒数的唯一ID,参数1是生成改ID的前缀,参数2如果设置为true,则生成长度为23的唯一ID,以便让GUID更唯一。trim函数去除字符串首尾为“zbp”的字符。str_replace函数将字符串中的点替换为空。最后返回该字符串。

GetVars($name, $type = 'REQUEST')获取参数值。

参数1:必须,数组的key名。

参数2:类型。默认为 REQUEST。

返回字符串或者null。

这个函数其实就是返回 $GLOBALS 数组指定类型的数组的某个元素的值。

GetVarsByDefault($name, $type = 'REQUEST', $default = null)获取参数值(可设置默认返回值)

参数1:数组KEY名

参数2:类型。默认 REQUEST。

参数3:默认返回值。默认为 null。

这个函数和上一个函数相似,只是这个函数可以设置见过为 null 或者空时的返回值。比如设置为 error 则见过是null或者空时返回 error。

GetDbName()获取数据库名。返回一个随机的SQLite数据文件名。例如:#%20590ac99bc939a751693701.db

GetCurrentHost($blogpath, &$cookiespath)获得当前网站地址

参数1:网站域名

参数2:返回cookie作用域,通过引用实现。

返回:网站的完整地址,如 http://localhost/zbp/

GetHttpContent($url)通过URL获取远程页面内容

参数为URL地址,返回页面文本内容,默认为 null。

GetDirsInDir($dir)获得目录下文件夹列表

参数1:目录名字

返回数组,文件夹列表。

GetFilesInDir($dir, $type)获取目录下制定类型文件列表

参数1:目录名字

参数2:文件类型,以|分隔

返回数组,文件列表

SetHttpStatusCode($number)设置http状态头。参数为int类型的状态值。返回true或者false表示是否设置成功。

Redirect($url)302跳转,参数为跳转链接

Redirect301($url)301跳转,参数为跳转链接

Http404()404跳转

Http500()500跳转

Http503()503跳转

Http304($filename, $time)设置304缓存头

参数1:文件名,参数2:缓存时间。

GetGuestIP()获取客户端IP,返回IP地址。使用$_SERVER['REMOTE_ADDR']获取。

GetGuestAgent()获得获取客户端Agent。使用$_SERVER['HTTP_USER_AGENT']获取。

GetRequestUri()获得请求来源,返回URL。

GetFileExt($f)获取文件后缀名。返回小写的后缀名。

GetFilePermsOct($f)获取文件权限,参数为文件名,返回文件权限,数值格式,如0644。

GetFilePerms($f)获取文件权限,参数为文件名,返回文件权限,字符表达格式,如-rw-r--r--。

AddNameInString($s, $name)向字符串型的参数表加入一个新参数。

参数1:字符串型的参数表,以|符号分隔

参数2:参数名

返回:返回新字符串,以|符号分隔

DelNameInString($s, $name)从字符串型的参数表中删除一个参数。

参数1:字符串型的参数表,以|符号分隔

参数2:参数名

返回:返回新字符串,以|符号分隔

HasNameInString($s, $name)在字符串参数值查找参数。

参数1:字符串型的参数表,以|符号分隔

参数2:参数名

返回:bool

JsonError4ShowErrorHook($errorCode, $errorString, $file, $line)以JSON形式返回错误信息(用于ShowError接口)。

调用下面这个函数返回结果。

JsonError($errorCode, $errorString, $data)以JSON形式返回错误信息。

参数1:错误编号

参数2:错误内容

参数3:object

返回:JSON格式字符串

JsonReturn($data)以JSON形式返回正确获取信息。参数是要返回的数据。

RespondError($errorCode, $errorString)XML-RPC应答错误页面。

参数1:错误代码

参数2:错误提示字符串

ScriptError($faultString)XML-RPC脚本错误页面,参数为错误提示字符串。

CheckRegExp($source, $para)验证字符串是否符合正则表达式。

参数1:字符串

参数2:正则表达式,可用[username]|[password]|[email]|[homepage]或自定义表达式

返回;bool

TransferHTML($source, $para)通过正则表达式格式化字符串。

参数1:字符串

参数2:正则表达式,可用[html-format]|[nohtml]|[noscript]|[enter]|[noenter]|[filename]|[normalname]或自定义表达式

返回:字符串

CloseTags($html)封装HTML标签。参数为html源码。

SubStrUTF8_Start($sourcestr, $start, $cutlength)获取UTF8格式的字符串的子串。

参数1:源字符串

参数2:起始位置

参数3:子串长度

返回:字符串

SubStrUTF8($sourcestr, $cutlength)获取UTF8格式的字符串的子串

参数1:源字符串

参数2:子串长度

返回:字符串

和上面函数不同的是这个函数只能从开头取。

SubStrUTF8_Html($sourcestr, $cutlength)截取HTML格式的UTF8格式的字符串的子串。

参数1:源字符串

参数2:子串长度

返回:字符串

RemoveBOM($s)删除文件BOM头,参数为文件内容。这个函数实际上只是去掉字符串开头的 BOM 的字符。str_replace函数将字符串中的点替换为空。最后返回该字符串。

GetTimeZonebyGMT($z)获取指定时区名。

参数1:时区号

返回:时区名

如,输入 8,返回 Asia/Shanghai。如果指定的时区号没有定义,返回默认值 UTC。

htmlspecialchars_array($array)对数组内的字符串进行htmlspecialchars。参数是待过滤字符串数组

FilterCorrectName($s)获得一个只含数字字母和-线的string,参数是字符串。

CheckCanBeString($obj)确认一个对象是否可被转换为string,返回bool

下面这些函数和数据库相关的

utf84mb_filter(&$sql)执行一个正则表达式搜索并且使用一个回调进行替换,替换的utf84mb_convertToUCS4是回调函数

utf84mb_fixHtmlSpecialChars()

utf84mb_convertToUCS4($matches)

utf84mb_convertToUTF8($matches)

VerifyWebToken($wt,$wt_id)验证Web令牌。参数1是令牌字符串,参数2是令牌ID。

CreateWebToken($wt_id,$time)创建Web令牌。参数1是令牌ID,参数2是令牌过期时间。

以下是该文件的功能代码。这个文件会在系统初始化阶段第4位加载。

//处理PHP版本兼容代码

如果没有定义hex2bin这个函数,这自己实现一个。

如果没有定义rrmdir这个函数,则自己实现一个。

如果下面这些常量不存在,则定义如下:

HTTP_URL_REPLACE = 1

HTTP_URL_JOIN_PATH = 2

HTTP_URL_JOIN_QUERY = 4

HTTP_URL_STRIP_USER = 8

HTTP_URL_STRIP_PASS = 16

HTTP_URL_STRIP_AUTH = 32

HTTP_URL_STRIP_PORT = 64

HTTP_URL_STRIP_PATH = 128

HTTP_URL_STRIP_QUERY = 256

HTTP_URL_STRIP_FRAGMENT = 512

HTTP_URL_STRIP_ALL = 1024

如果没有定义http_build_url函数,自己实现一个。

同上,gzdecode和session_status函数也是。

这篇文章并没有详细的解读各个语句的意思,原因在于这个文件的大部分都是函数的实现,并没有多少逻辑代码会影响博客系统的实现,我们需要做的只是调用函数即可。对于部分函数的实现,或许以后会专门研究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容