【问题标题】:PHP: Need to find certain data from a stringPHP:需要从字符串中查找某些数据
【发布时间】:2014-11-19 18:30:04
【问题描述】:

$string = "响应 22:404 (8345ms),标头:Accept-Ranges=bytes, Cache-Control=no-cache, no-store, private, Connection=close, 内容编码=gzip,内容语言=it-it,内容长度=1674, 内容位置=index.html.it-it,内容类型=文本/html; 字符集=utf-8,日期=星期三,2014 年 9 月 24 日 19:01:30 GMT, ETag='eb1-50331586750c0;503ac178f62dd',上次修改时间=2014 年 9 月 16 日星期二 格林威治标准时间 16:35:55,服务器=Apache, 严格传输安全=最大年龄=31536000;包括子域, TCN=选择,Vary=协商,接受,接受语言,接受编码, X-Frame-Options=SAMEORIGIN, X-UA-Compatible=IE=Edge";

这里我想获取响应号(=> 22)、响应代码(=> 404)及其毫秒(=> 8345ms)。 我想我必须使用正则表达式,但我是新手。可以给点建议吗?

【问题讨论】:

  • 您可以随时使用 getallHeaders() 来获取标题数组,然后方便地进行迭代
  • 如果格式始终相同,只需几个explode()。在我看来,这比尝试编写复杂的正则表达式要容易得多。
  • 为什么你们认为正则表达式很复杂?
  • 谢谢阿维纳什。我并不是说它很复杂;),但我对正则表达式很陌生。希望我能尽快学会。您能否为我推荐一些好的在线教程。
  • 这会帮助你regular-expressions.info

标签: php regex


【解决方案1】:
Response\s*(\d+):\s*(\d+)\s*\((\S+)?\)

试试这个。获取三个组。查看演示。

http://regex101.com/r/qC9cH4/3

【讨论】:

  • 您好,非常感谢您的快速回复:) preg_match('Response\s*(\d+):\s*(\d+)\s*(\S+?)', $字符串,$匹配); var_dump($match);我在这里收到错误,我们可以在这里使用 preg_match() 吗?
  • 它说“警告:preg_match():分隔符不能是字母数字或反斜杠”。
  • @RameshRaja 你忘记添加分隔符了。
  • @vks 最好使用这个Response\s*(\d+):\s*(\d+)\s*\(([^()]+)?\) 而不是Response\s*(\d+):\s*(\d+)\s*\((\S+)?\)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多