最近遇到个小问题,需要遍历出某文件夹下所有文件内容并最终生成一个 JSON 数据格式 然后使用了 glob() 函数来遍历文件 然后使用 json_encode() 函数来处理json数据格式,主要记录下这2个函数的参数 以前都怎么认真看过,其实他们有很多小功能
glob()函数
glob ( string $pattern [, int $flags = 0 ] ) : array
glob() 函数依照 libc glob() 函数使用的规则寻找所有与 pattern 匹配的文件路径,类似于一般 shells 所用的规则一样。不进行缩写扩展或参数替代。
返回一个包含有匹配文件/目录的数组。如果出错返回 FALSE。
flags
有效标记有:GLOB_MARK - 在每个返回的项目中加一个斜线
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 ‘a’,’b’ 或 ‘c’
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误
示例如下
另外说下 如果是含有中文的路径 一定要转换成当前系统所默认的编码才可以 不然会有读取不出来的问题
json_encode() 函数
json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] ) : string
对变量进行 JSON 编码,返回字符串,包含了 value 值 JSON 形式的表示。 编码受传入的 options 参数影响,此外浮点值的编码依赖于 serialize_precision。
成功则返回 JSON 编码的 string 或者在失败时返回 FALSE 。
要说的是它的 options
参数 他有好多的值可以选择 以前真的没怎么注意过这个东西 JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR, JSON_UNESCAPED_LINE_TERMINATORS, JSON_THROW_ON_ERROR.
这些都是可选项
主要讲下其中几个比较常用的
JSON_UNESCAPED_SLASHES
选项表示不要对结果中的/
进行编码 比如你的结果中含有类似xx/xx/xx
这种 对他进行编码的时候 如果没有改选项参数 最终结果就会变成xx\/xx\/xx
JSON_UNESCAPED_UNICODE
选项表示以字面编码多字节 Unicode 字符,就是说如果没有这个的时候 中文之类会变成\uXXXX
这个样子 比如这样"title":"\u8bb0\u4e00\u6b21
真的好久都没有认真看过官方文档了,原来还有这么多小功能 惭愧!!!
参考
http://php.net/manual/zh/function.glob.php
http://php.net/manual/en/function.json-encode.php
http://php.net/manual/zh/json.constants.php