это оригинальный файл ofx, полученный от m bank (не беспокойтесь, ничего особенного, я вырезал среднюю часть со всеми транзакциями)
Open Financial Exchange (OFX) - этоформат потока данных для обмена финансовой информацией, созданный на основе форматов файлов Open Financial Connectivity (OFC) Microsoft и Intuit Open Exchange.
Теперь мне нужно разобрать это.я уже видел этот вопрос , но это не обман, потому что я заинтересован в том, как это сделать.но это безобразно и подвержено ошибкам (если формат изменен, некоторые поля могут отсутствовать, форматирование / пробелы различаются и т. д. и т. д.)желаемый результат:
<?
$files = array();
$files[] = '***_2011001.ofx';
$files[] = '***_2011002.ofx';
$files[] = '***_2011003.ofx';
system('touch file.csv && chmod 777 file.csv');
$fp = fopen('file.csv', 'w');
foreach($files as $file) {
echo $file."...\n";
$content = file_get_contents($file);
$content = str_replace("\n","",$content);
$content = str_replace(" ","",$content);
$regex = '|<STMTTRN><TRNTYPE>(.+?)<DTPOSTED>(.+?)<TRNAMT>(.+?)<FITID>(.+?)<NAME>(.+?)<MEMO>(.+?)</STMTTRN>|';
echo preg_match_all($regex,$content,$matches,PREG_SET_ORDER)." matches... \n";
foreach($matches as $match) {
echo ".";
array_shift($match);
fputcsv($fp, $match);
}
echo "\n";
}
echo "done.\n";
fclose($fp);
это действительно ужасно, и если бы это был действительный XML-файл, я бы лично убил себя за это, но как это сделать лучше?