我有一個腳本實時觀看日誌文件的最後一行。當下面的行出現時。我想提取第二組括號內的數據。我原來的代碼工作正常,問題是日誌輸出已更改。示例日誌輸出:問題解析使用正則表達式提取數據
2016-04-28 16:54:49 INFO [ADMINCGI sid=1] Title updated [Peezy - Dope Fein Baby (Feat. TID Sweeze & H.N.I.C Pesh)]
2016-04-28 16:54:49 INFO [ADMINCGI sid=1] DJ name updated [1]
我需要首先確保有關線#1線找到行,如果可能,然後提取裏面第二個括號中的文字。
我使用這一點,但它返回的#2線
我的代碼:
$line ="2016-04-27 22:56:48 INFO [ADMINCGI sid=1] Title updated [Tessa Feat. Gucci Mane - Get You Right]";
echo $line;
$pattern="/\[([^\]]*)\]/";
$needle = " Title updated ";
if (strpos($line,$needle) !== false) {
preg_match_all($pattern, $line, $matches);
foreach ($matches[1] as $a){
// echo $a."</br>";
// echo $matches[1][1];
$fulltitle = explode("-", $matches[1][1]);
$artist = $fulltitle[0];
$title = $fulltitle[1];
echo $artist;
爲什麼你迭代一個數組,如果你直接訪問條目?也許我對太多的細節感到煩惱,順便說一下許多在線正則表達式測試可以幫助你測試你的模式。例如http://www.regexr.com/。 – SmasherHell
如果您單獨測試每一行,請嘗試使用['preg_match_all('〜\ [([^] [] *)]〜',$ input,$ m); $ my_val = $ m [1] [1];'](http://ideone.com/jAwAKe) –
@ BuzzzHost.com:有沒有反饋?有什麼建議可以幫你嗎? –