Ich habe eine Reihe von Text/HTML-Dokumenten, die ich verarbeiteWie erkennt man ungültige HTML-Entitäten in PHP?
Einige von ihnen enthalten kodierte HTML-Entities, die ich in ihre rohen entschlüsselten UTF-Zeichen zu konvertieren versuche.
Das ist einfach html_entity_decode
verwenden, jedoch sind einige der Entitäten ungültig wie
򙦙
Aus diesem Grunde einen regulären Ausdruck verwende ich jede einzelne Einheit zu ziehen, und dann irgendwie zu versuchen, sie zu validieren .
Wenn eine Entität ungültig ist, möchte ich es als 򙦙
im Dokument lassen, aber Dinge wie eine codierte &
würde immer noch &
werden.
Nur ein paar Probe-Test-Code I knocked up ..
<?php
function dump_chars($s)
{
if (preg_match_all('/&[#A-Za-z0-9]+;/', $s, $matches))
{
foreach ($matches[0] as $m)
{
$decoded = html_entity_decode($m, ENT_QUOTES, "UTF-8");
echo "[" . htmlentities($m, ENT_QUOTES, "UTF-8") . "] ";
echo "Decoded: [" . $decoded . "] ";
echo "Hex: [" . bin2hex($decoded) . "] ";
echo "detect: [" . mb_detect_encoding($decoded) . "]";
echo "<br>";
}
}
}
$payload = "" & ͉ ’ 򙦙";
echo "<html><head><meta charset='UTF-8'></head><body>";
dump_chars($payload);
Ich bin ein bisschen eine leere Zeichnung wie man am besten an das Unternehmen zu überprüfen, würde etwas Hilfe lieben, gefallen.