本文主要是介绍php如何正则提取指定[]中的值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
假设某条日志为:NOTICE: 17-05-22 11:00:00 [/home/work/orp/php/phplib/saf/base/Log.php:28] logId[3599980370] refer[] cookie[] uri[/order/commit/order?mod=emsg&transid=437995094] optime[1495421999.998 ] client_ip[10.67.49.39] local_ip[10.193.69.49]
一、目标:提取logId后面[]中的字符串
分析:整条数据中有多个括号,需精确提取指定[]中的字符串
二、方案:
1. 方案1.
代码
结果
分析:
以上的正则表达式会自动匹配了logId[和最后一个]之间的字符串,包括了多个[],与我们的预期(提取logId[....]之间的字符串
2. 方案2.
代码
结果
分析:
已经基本提取到logId这个字符串,但是我们直接想要[]中的字符串
3. 方案3.
代码
结果:
分析:
现在就可以成功提取了,下面分析一下该正则表达式
// logId : 首先匹配字符串logId// \[ : 再匹配一个[ ,因为 [ 属于特殊字符,所以需加一个转义符 \[// () : 括号()代表指定需要单独提取出来的内容// [^\]]* : 代表匹配包括非]在内的所有字符任意个// \] : 代表能够匹配一个]
这篇关于php如何正则提取指定[]中的值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!