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) );
}
Последнее редактирование модератором: