首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用php将字符串拆分成数组

用php将字符串拆分成数组
EN

Stack Overflow用户
提问于 2014-07-07 21:20:34
回答 2查看 81关注 0票数 0

如何将以下格式字符串拆分成数组?

代码语言:javascript
运行
复制
[13:05:37] [Server thread/INFO]: [0;35;1m[Server[0;35;1m] hi[m

该字符串格式来自一个矿山工艺服务器,我相信它的格式是

代码语言:javascript
运行
复制
[time] [thread info]: ANSICOLOROPEN[stringANSICOLORCLOSE] string EOL

我如何拆分它才能使数组

代码语言:javascript
运行
复制
[0]time 
[1]thread info
[3]ansi open
[4]string
[5]ansi close
[6]string 
[7]EOL marker
EN

回答 2

Stack Overflow用户

发布于 2014-07-07 22:11:28

我倾向于首先在空格上分解这些类型的日志条目,然后在索引值中进行硬编码,因为这些值往往不会改变。例如:

代码语言:javascript
运行
复制
$log_line = "[13:05:37] [Server thread/INFO]: [0;35;1m[Server[0;35;1m] hi[m";
$line_parts = explode(" ",$log_line);

$log_data = array(
 'time' => $line_parts[0],
 'thread_info' => $line_parts[1],
 'somethingansirelated' => $line_parts[2]
);

从这里以各种方式进一步清理各种日志数据要容易得多,例如,您可以使用array_map:

代码语言:javascript
运行
复制
array_map( function( $a ){
  // trim, format, validate, etc.

}, $log_data );

不确定这是否会因为不回答而受到抨击,但它可能会有所帮助,所以你可以这样做。

票数 0
EN

Stack Overflow用户

发布于 2014-07-07 23:54:29

您可以尝试使用正则表达式将所有项目括在方括号中,例如:

代码语言:javascript
运行
复制
$re = "/\[([^\]]+)\]/"; 
$str = "[13:05:37] [Server thread/INFO]: [0;35;1m[Server[0;35;1m] hi[m]"; 

preg_match_all($re, $str, $matches);

然后可以遍历$matches变量,该变量是对字符串使用的模式的可能匹配项的数组。

preg_match_all

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24611588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档