加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 解析skype日志

发布时间:2020-12-13 22:44:37 所属栏目:PHP教程 来源:网络整理
导读:我需要解析一个Skype日志,抓住所有通话时长并添加它们,并找出整个聊天记录的总呼叫持续时间. 样品: [3/12/2012 11:36:44 AM] *通话结束,持续时间21:33 * 我想我需要使用preg_match和正确的正则表达式.如果可以在更好的同时将实际时间戳存储在数组中. 我认为
我需要解析一个Skype日志,抓住所有通话时长并添加它们,并找出整个聊天记录的总呼叫持续时间.

样品:

[3/12/2012 11:36:44 AM] *通话结束,持续时间21:33 *

我想我需要使用preg_match和正确的正则表达式.如果可以在更好的同时将实际时间戳存储在数组中.

我认为我真正难以理解的是实际的正则表达式规则,只需要获取呼叫持续时间.

解决方法

试试这个

(?i)[(?P<time_stamp>[^[]+)]s*[*]s*[a-z,]+(?P<duration>(?:d{2}:?){2,3})s*[*]

说明

"
(?i)               # Match the remainder of the regex with the options: case insensitive (i)
[                 # Match the character “[” literally
(?P<time_stamp>    # Match the regular expression below and capture its match into backreference with name “time_stamp”
   [^[]               # Match any character that is NOT a “[”
      +                  # Between one and unlimited times,as many times as possible,giving back as needed (greedy)
)
]                 # Match the character “]” literally
s                 # Match a single character that is a “whitespace character” (spaces,tabs,and line breaks)
   *                  # Between zero and unlimited times,giving back as needed (greedy)
[*]                # Match the character “*”
s                 # Match a single character that is a “whitespace character” (spaces,giving back as needed (greedy)
[a-z,]            # Match a single character present in the list below
                      # A character in the range between “a” and “z”
                      # One of the characters “,”
   +                  # Between one and unlimited times,giving back as needed (greedy)
(?P<duration>      # Match the regular expression below and capture its match into backreference with name “duration”
   (?:                # Match the regular expression below
      d                 # Match a single digit 0..9
         {2}                # Exactly 2 times
      :                  # Match the character “:” literally
         ?                  # Between zero and one times,giving back as needed (greedy)
   ){2,3}             # Between 2 and 3 times,giving back as needed (greedy)
)
s                 # Match a single character that is a “whitespace character” (spaces,giving back as needed (greedy)
[*]                # Match the character “*”
"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读