Как читать .docx файл на php
Для чтения .docx файла на php я использую библиотеку PHPOffice/PHPWord. Я написал такую функция для чтения .docx файла:
function read_docx($path_to_file) {
$source = $path_to_file;
$objReader = \PhpOffice\PhpWord\IOFactory::createReader('Word2007');
$phpWord = $objReader->load($source);
$body = '';
foreach($phpWord->getSections() as $section) {
$arrays = $section->getElements();
foreach($arrays as $e) {
// echo get_class($e) . "<br>";
if(get_class($e) === 'PhpOffice\PhpWord\Element\TextRun') {
foreach($e->getElements() as $text) {
// echo $text->getText() . "<br>";
$font = $text->getFontStyle();
$size = $font->getSize()/10;
$bold = $font->isBold() ? 'font-weight:700;' :'';
$color = $font->getColor();
$fontFamily = $font->getName();
$body .= '<span style="font-size:' . $size . 'em;font-family:' . $fontFamily . '; '.$bold.'; color:#'.$color.'">';
$body .= $text->getText().'</span>';
}
}
else if(get_class($e) === 'PhpOffice\PhpWord\Element\TextBreak') {
$body .= '<br />';
}
else if(get_class($e) === 'PhpOffice\PhpWord\Element\Table') {
$body .= '<table border="2px">';
$rows = $e->getRows();
foreach($rows as $row) {
$body .= '<tr>';
$cells = $row->getCells();
foreach($cells as $cell) {
$body .= '<td style="width:'.$cell->getWidth().'">';
$celements = $cell->getElements();
foreach($celements as $celem) {
if(get_class($celem) === 'PhpOffice\PhpWord\Element\Text') {
$body .= $celem->getText();
}
else if(get_class($celem) === 'PhpOffice\PhpWord\Element\TextRun') {
foreach($celem->getElements() as $text) {
$body .= $text->getText();
}
}
}
$body .= '</td>';
}
$body .= '</tr>';
}
$body .= '</table>';
}
else {
$body .= $e->getText();
}
}
// break;
}
return $body;
В этой функции видно, что когда встречается знак абзаца в .docx файле, функция ставит тег <br> . Но этот тег она ставит только если есть 2 знака абзаца, т.е. библиотека PHPOffice/PHPWord почему то не распознает 1 знак абзаца.
Мне нужно, чтобы, когда в файле .docx встречается знак абзаца, ставить тег <br>. Как мне этого добиться?