我有一堆在日誌文件中的行,我需要只提取查詢字符串的一部分。我已經確定了這些模式:如何從這些日誌中提取查詢字符串?
/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