2017-05-19 6 views
0

Mein PHP-Skript ist immer Zeilen aus einer MySQL-Tabelle, die Strings wie die folgenden enthalten:htmlspecialchars „Forbidden Codepunkt“ Validierungsfehler

$string = 'ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨'; 

Gibt es eine Möglichkeit, diese Art von Saiten an den Browser Echo ohne "Verbotener Codepunkt" erhalten, wenn das Dokument über einen HTML5-Validator ausgeführt wird?

Ich habe versucht, die folgenden:

htmlspecialchars($string); 
htmlspecialchars($string, ENT_SUBSTITUTE, 'UTF-8'); 
htmlspecialchars($string, ENT_DISALLOWED, 'UTF-8'); 
htmlspecialchars(mb_convert_encoding($string, 'UTF-8'); 

aber alle diese Ausdrücke führen nach wie vor in der „Verbotenen Codepunkt“ Fehler. Die Codierung der Webseite ist bereits auf UTF-8 über einen Meta-Tag:

<meta charset="UTF-8"> 

Antwort

0

Die Lösung, die für mich gearbeitet wurde:

htmlspecialchars($string, ENT_SUBSTITUTE | ENT_DISALLOWED); 

Dieses so viele Zeichen wie möglich in UTF-8 konvertiert und entfernt alles andere.

1

Die PHP-Funktion htmlentities() kann sein, was Sie suchen. Diese Funktion konvertiert anwendbare Zeichen in HTML-Entitäten.

Zum Beispiel:

$string = 'ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨'; $string = htmlentities($string); echo $string;

Wird Ihre Kette von ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨ in &iuml;&frac14;&rsquo;&atilde;&curren;&atilde;&reg;&auml;&sup1;&sup3;&eacute;&hellip;&cedil;&egrave;&OElig;&atilde;&reg;&ccedil;&uml;uml; umwandeln, die verwendet werden können, auf einer HTML-Seite ohne Fehler anzuzeigen.

Weitere Informationen zu dieser Funktion ein hier: https://secure.php.net/manual/en/function.htmlentities.php

+0

Danke. Ich hatte jedoch immer noch ungültige Zeichen. –