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>
31 lines
969 B
PHP
31 lines
969 B
PHP
<?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))));
|
||
}
|
||
}
|