我有一堆在日志文件中的行,我需要只提取查询字符串的一部分。我已经确定了这些模式:如何从这些日志中提取查询字符串?
/path/optin.html?e=somebase64string&l=somedifferentbase64string HTTP...
"/path/optin.html?e=somebase64string%3D&l=somedifferentbase64string" "browser info"...
"/path/optin.html?" "browser info"...
一些注意事项:
- 有时,路径和查询字符串用双引号
- 有时没有查询字符串可言,显然没有查询字符串的那些将被丢弃。
- 有时的base64字符串进行URL编码,所以结束“=”的部分当属“%3D”代替。我认为这不会影响我的剧本,但我想我也会记下它。
所以,我能够正确地提取 - 希望 - 所有的行跟随上面的第一个模式,但其他人我有一些麻烦。
这是我与尝试的模式:
$pattern = '/html\?(.*)\s*HTTP/';
然后我跑的preg_match对日志行。
任何人都可以帮助我更好的正则表达式模式?
我需要抓住这部分关闭日志行:
E = somebase64string & L = somedifferentbase64string
感谢
什么是您预期的结果?请在你的问题中加上 –
你是否检查过'parse_url()'?用空格分解,并解析第一个元素。 –
我试图parse_str提取的查询字符串转换为数组和操作这种方式,我没想到parse_url的,所以我将不得不对其进行测试,由于 – andrux