aNNiPAk, как то так
<?php
$dir = 'dir';
$resultfile = new SplFileObject('result.txt', 'w');
$fileSPLObjects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::CHILD_FIRST);
foreach($fileSPLObjects as $fullFileName => $fileSPLObject ) {
if ($fileSPLObject->isFile()) {
$info = new SplFileInfo($fullFileName);
if ($info->getExtension() == 'txt') {
$content = file_get_contents($fullFileName);
$patterns = array(
'#dynasty = "(.*)"#iU',
'#name = "(.*)"#iU',
'#leader = "(.*)"#iU',
'#capital = "(.*)"#iU',
);
$resultfile->fwrite(' - ' . basename($fullFileName) . ' - ' . PHP_EOL); // эта строка в результат добавляет имя файла
foreach($patterns as $pattern) {
preg_match($pattern, $content, $matches);
empty($matches[0]) ?: $resultfile->fwrite($matches[0] . PHP_EOL);
}
unset($content);
}
}
}