Using PHPDocx 12.5, I get several PHP warnings and notices in my log file after creating a Word file. I use CreateDocxFromTemplate and replaceVariableByHTML, which produces the errors.
Depending on how many variables are replaced in the template, I get the following errors more than once, sometimes over 100 of them for one Word file:
Severity: Warning --> DOMDocument::loadHTML(): Tag close invalid in Entity, line: 1 /Users/rolandvaandrager/Development/app/source/vendor/phpdocx/classes/DOMPDF_lib.php 2641 Severity: Notice --> Undefined index: text_decoration /Users/rolandvaandrager/Development/app/source/vendor/phpdocx/classes/HTML2WordML.php 2493 Severity: Notice --> Undefined offset: 5 /Users/rolandvaandrager/Development/app/source/vendor/phpdocx/classes/HTML2WordML.php 2019 Severity: Notice --> Trying to access array offset on value of type null /Users/rolandvaandrager/Development/app/source/vendor/phpdocx/classes/HTML2WordML.php 2019
The first loadHTML() error is caused by a <close> tag in the HTML, which is generated by line 2705 in DOMPDF_lib.php:
$str = str_replace('</body>', '<close></body>', $str);
I don't know why this is done, it creates invalid HTML. If I remove this statement though, I get an invalid Word file with many more errors about unclosed tags in WordML.
The notices are caused by using the @ sign before an array, which is not accepted by PHP 7.4. Line 2493 of HTML2WordML.php states:
if (($this->openLinks && @$properties['text_decoration'] != 'none') || @$properties['text_decoration'] == 'underline') {
Here, $properties has no key 'text_decoration', and @ does not suppress the notice. I think that isset should be used here. These notices are also generated on other lines in this file, where the @ sign is used the same way.
What can be done to suppress these errors, other than just suppressing all PHP errors and warnings?