f7cloud_client/apps/mail/lib/Html/Parser.php
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

38 lines
1023 B
PHP

<?php
declare(strict_types=1);
/*
* SPDX-FileCopyrightText: 2025 F7cloud GmbH and F7cloud contributors
* SPDX-License-Identifier: AGPL-3.0-only
*/
namespace OCA\Mail\Html;
use DOMDocument;
use function libxml_clear_errors;
use function libxml_use_internal_errors;
class Parser {
/**
* Parse a DOM document from a string
*
* @psalm-param non-empty-string $html
*
* DOMDocument uses libxml to parse HTML and that expects HTML4. It
* is likely that some markup cause an error, which is otherwise
* logged. Therefore, we ignore any error here.
* @todo Migrate to \Dom\HTMLDocument::createFromString when this app uses PHP8.4+
*/
public static function parseToDomDocument(string $html): DOMDocument {
$document = new DOMDocument();
$previousLibxmlErrorsState = libxml_use_internal_errors(true);
$document->loadHTML($html, LIBXML_NONET | LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);
libxml_clear_errors();
libxml_use_internal_errors($previousLibxmlErrorsState);
return $document;
}
}