Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Задача: найти в файле всё что находится в {t}{/t}

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Задача: найти в файле всё что находится в {t}{/t}
Wet
Отправлено: 15 Марта, 2016 - 18:05:40
Post Id



Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Нужно найти в файле всё что находится в {t}{/t} и записать в лог. А также при записи текста, который находится в {t}{/t} нужно указать из какого файла это взято и с какой строки. Подскажите, пож), как лучше реализовать данную задачу. Недопиленный вариант:
PHP:
скопировать код в буфер обмена
  1. // функция записи
  2. function log($filename, $mode, $data = false)
  3. {
  4.     $file = fopen($filename, $mode);
  5.     fwrite($file, $data);
  6.     fclose($file);
  7. }
  8. // массив ключей для array_combine
  9. $kArr = array();
  10. // массив значений для array_combine
  11.     $vArr = array();
  12. // регулярка
  13.     $gettext_pattern = array(
  14.       "~\{\"([^\"]+)\"\|_([^\}]*)\}~",  // {"Text"|_}
  15.       "~\{t\}([^\{]+)\{/t\}~"           // {t}Text2{/t}
  16.     );
  17. // пробегаемся по списку файлов
  18. foreach($p as $k=>$v)
  19. {
  20.   foreach(glob(str_replace('_','?',$v)) AS $_ => $file_disk)
  21.   {
  22.     $f=file($file_disk);
  23. //разбиваем файл на "номер строки => контент"
  24.     foreach ($f as $num => $str)
  25.     {
  26. //пробегаемся по регулярке      
  27. foreach ( $gettext_pattern as $patt)
  28.         {
  29. // если есть совпадения обрабатываем            
  30. if( preg_match_all($patt, $str, $reges) )
  31.             {  
  32. // отдельно пишем номер строки для ключей array_combine            
  33. $kArr[] = $num+1;
  34. // отдельно пишем найденый текст для значений array_combine            
  35. $vArr = array_merge($vArr, $reges[1]);
  36.                 /*$kArr = array('k1','k2');
  37.                 $vArr = array('v1','v2');*/
  38.             }  
  39.         }  
  40.     }
  41.   }
  42. }
  43. log( "log.txt", "w", serialize($vArr) );
  44. log( "log2.txt", "w", serialize($kArr) );
  45. /* объединяем найденые ключи с текстом (и тут начинаются проблемы, тк текст бывает встречается на одной и той же строке, пример: 'стр1: <span>{"Тестовый"|_}</span>{"текст"|_}' - это будет засчитано как два значения на 1 строку) Дальше пока не решил как добавить имя файла*/
  46. $resArr = array_combine($kArr, $vArr);
  47.     if( $resArr )
  48.     {  
  49.         log( "log3.txt", "w", serialize($resArr) );
  50.     }

Как быть? Подскажите, кто нить)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB