Finanzmanager/src/Services/BankFreitext.php
fds2610-bot 1cdb59b68b Fix #115: TAN-Anfrage – Startcode hervorheben
Nennt die Bank bei der TAN-Abfrage einen Startcode für den TAN-Generator,
geht er im Fließtext leicht unter. StartcodeErkennung erkennt ihn über
einen pro Bankverbindung konfigurierbaren Beispielsatz (Ziffernfolge =
Platzhalter für den Code) und zeigt den Fund fett, zentriert und in
eigener Zeile. BankFreitext löst dafür die bisherige Klartext-Aufbereitung
aus FinTsUeberweisung::vopHinweis() heraus, damit TAN-Anfrage und
VoP-Rückmeldung dieselbe HTML-zu-Klartext-Umwandlung nutzen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-04 20:21:56 +02:00

31 lines
969 B
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
declare(strict_types=1);
namespace Finanzmanager\Services;
/**
* Freitext der Bank – etwa aus VoP-Rückmeldung oder TAN-Anfrage – als
* Klartext.
*
* Banken liefern hier HTML (laut FinTS-Spezifikation nur br, p, b, i, u, ul,
* ol und li). Übernommen werden nur die Absätze als Zeilenumbrüche; die
* Auszeichnung fliegt weg – fremdes Markup gehört nicht ungeprüft in die
* eigene Seite.
*/
final class BankFreitext
{
public static function klartext(string $html): string
{
if (trim($html) === '') {
return '';
}
$text = preg_replace('#<(br|/p|/div|/li|/h[1-6])[^>]*>#i', "\n", $html) ?? $html;
$text = html_entity_decode(strip_tags($text), ENT_QUOTES | ENT_HTML5, 'UTF-8');
$text = preg_replace('/[ \t]+/', ' ', $text) ?? $text;
$text = preg_replace("/\n{3,}/", "\n\n", $text) ?? $text;
return trim(implode("\n", array_map('trim', explode("\n", $text))));
}
}