У меня есть сценарий, который просматривает последнюю строку файла журнала в реальном времени. Когда появится следующая строка. Я хочу извлечь данные во второй набор скобок. Мой исходный код работал нормально, проблема в том, что выход журнала изменился. Пример вывода журнала:Анализ синтаксического анализа данных с использованием Regex
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: Любая обратная связь? Есть ли какое-нибудь предложение для вас? –