Как заставить PHP Word дополнять docx, не перезаписывать?
Здравствуйте!
Использую библиотеку PHP Word для записи туда выдержек из xml. Xml добывается и обрабатывается в цикле foreach(). Каждую итерацию разбирается новая xml-ка, а результаты помещаются в переменных $res и $lo. Проблема в том, что метод библиотеки PHP Word addtext() с каждой итерацией перезаписывает новые данные поверх старых. А мне нужно, чтобы новая информация записывалась и сохранялась ниже уже записанной.. По всякому пробовал, но на удивление, не решение не нашел. Не сталкивался ли кто-нибудь с похожей проблемой?
$phpWord = new \PhpOffice\PhpWord\PhpWord();
PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);
$section = $phpWord->addSection();
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
foreach ($tmp as $key => $value) {
if (is_string($value)) {
/*var_dump(substr($value, 21));*/
$cut = $value;
$output = 'https://yandex.ru/search/xml?user=&key=&query=' . urlencode($cut) . '&lr==ru&sortby=&filter=none&maxpassages=5&groupby=ocs-in-group%3D3';
$result = file_get_contents($output);
$al = simplexml_load_string($result);
$clay = $al->{'response'}->results->grouping->group[0]->doc->title->hlword;
echo '<pre>';
print_r($al);
echo '<pre>';
foreach ($clay as $sd) {
$arr[] = '' . $sd . '';
}
$res = implode(" ", $arr);
$arr = [];
$lo = $al->{'response'}->results->grouping->group[0]->doc->url;
if($key === 0) {
$section->addText('Отчет по публикациям информационного агентства');
}
$section->addText($res);
$section->addText($lo);
$section->addTextBreak();
$objWriter->save('helloWorld.docx');
if($key % 3 == 1) {
$key = $key + 1;
break;
}
}
$_SESSION["time"] = $key;
//session_destroy();
?>
22 марта 2021 в 18:07