Задать вопрос
@dosattack13

Поиск в массиве через регулярное выражение?

Всем привет! Есть код который выводит данные из файла построчно от..до. Проблема в следующем.. если указывать искомое слово как строка то все работает if (trim($file[$i]) == 'начало' ), а если вместо строки 'начало' указать регулярку то не находит совпадений.
Подскажите как в выражение подставить регулярку if (trim($file[$i]) == $regstart )

<?php
$res = file(__DIR__ . '/my.log'); //открытие файла
$file=$res; // открытие переменной
$i=0; // переменная счетчика

$regstart = '/[A-Z]{1}[a-z]{2}\s\d{4}.\d\d.\d\d.\d\d.\d\d.\d\d.\d{3}.\s\d\d.\sSession 202966.\schild\s\d\d\d\d/'; // регулярка выводить от..
$regend = '/[A-Z]{1}[a-z]{2}\s\d{4}.\d\d.\d\d.\d\d.\d\d.\d\d.\d{3}.\s\d\d.\s\-\-\-\-\-\-\-\-\-\-/'; // регулярка выводить до..    

foreach($file as $element)
{
  while ($i<count($file)) {
    if (trim($file[$i]) == 'начало' )
      break;
    $i++;
  }
  while ($i<count($file)) {
    if (trim($file[$i]) == 'конец' )
      break;
  echo $file[$i]."<br>"; 
  $i++;
}
}
?>

Содержимое файла my.log
начало
Fri 2018-01-12 00:07:29.732: 05: Session 202966; child 0001
Fri 2018-01-12 00:07:29.739: 05: *  P=0=(281) MX=[mx.yandex.net]
Fri 2018-01-12 00:07:29.739: 05: Resolving A record for mx.yandex.net (DNS Serv2)...
Fri 2018-01-12 00:07:50.847: 01: ----------
конец
...
много текста
...
начало
Fri 2018-01-12 00:07:29.732: 05: Session 202967; child 0001
Fri 2018-01-12 00:07:29.732: 01: Parsing message sg>
Fri 2018-01-12 00:07:50.847: 04: SMTP session terminated (Bytes in/out: 0/0)
Fri 2018-01-12 00:07:50.847: 01: ----------
конец
  • Вопрос задан
  • 430 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы