Задача: найти в файле всё что находится в {t}{/t}

Wet

Новичок
Нужно найти в файле всё что находится в {t}{/t} и записать в лог. А также при записи текста, который находится в {t}{/t} нужно указать из какого файла это взято и с какой строки. Подскажите, пож), как лучше реализовать данную задачу. Недопиленный вариант:
PHP:
// функция записи
function log($filename, $mode, $data = false)
{
    $file = fopen($filename, $mode);
    fwrite($file, $data);
    fclose($file);
}
// массив ключей для array_combine
$kArr = array();
// массив значений для array_combine
    $vArr = array();
// регулярка
    $gettext_pattern = array(
      "~\{\"([^\"]+)\"\|_([^\}]*)\}~",  // {"Text"|_}
      "~\{t\}([^\{]+)\{/t\}~"           // {t}Text2{/t}
    );
// пробегаемся по списку файлов
foreach($p as $k=>$v)
{
  foreach(glob(str_replace('_','?',$v)) AS $_ => $file_disk)
  {
    $f=file($file_disk);
//разбиваем файл на "номер строки => контент"
    foreach ($f as $num => $str)
    {
//пробегаемся по регулярке     
foreach ( $gettext_pattern as $patt)
        {
// если есть совпадения обрабатываем           
if( preg_match_all($patt, $str, $reges) )
            {  
// отдельно пишем номер строки для ключей array_combine            
$kArr[] = $num+1;
// отдельно пишем найденый текст для значений array_combine            
$vArr = array_merge($vArr, $reges[1]);
                /*$kArr = array('k1','k2');
                $vArr = array('v1','v2');*/
            }  
        }  
    }
  }
}
log( "log.txt", "w", serialize($vArr) );
log( "log2.txt", "w", serialize($kArr) );
/* объединяем найденые ключи с текстом (и тут начинаются проблемы, тк текст бывает встречается на одной и той же строке, пример: 'стр1: <span>{"Тестовый"|_}</span>{"текст"|_}' - это будет засчитано как два значения на 1 строку) Дальше пока не решил как добавить имя файла*/
$resArr = array_combine($kArr, $vArr);
    if( $resArr )
    {  
        log( "log3.txt", "w", serialize($resArr) );
    }
Как быть? Подскажите, кто нить)
 
Последнее редактирование модератором:
Сверху