簡體   English   中英

htmlspecialchars“禁止的代碼點”驗證錯誤

[英]htmlspecialchars “Forbidden code point” validation error

我的php腳本正在從MySQL表獲取包含如下字符串的行:

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

通過HTML5驗證器運行文檔時,是否有一種方法可以將這些類型的字符串回顯到瀏覽器而又不會獲得“禁止的代碼點”?

我嘗試了以下方法:

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

但是所有這些表達式仍然會導致“禁止的代碼點”錯誤。 網頁的編碼已通過meta標簽設置為UTF-8:

<meta charset="UTF-8">

您可能正在尋找PHP函數htmlentities() 此功能會將提供的適用字符轉換為HTML實體。

例如:

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

會將您的, ï¼'ã¤ã®ä¹³é…¸èŒã®ç¨字符串轉換為&iuml;&frac14;&rsquo;&atilde;&curren;&atilde;&reg;&auml;&sup1;&sup3;&eacute;&hellip;&cedil;&egrave;&OElig;&atilde;&reg;&ccedil;&uml;uml; 可用於在HTML頁面上正確顯示。

有關此功能的更多信息,請參見: https : //secure.php.net/manual/en/function.htmlentities.php

對我有用的解決方案是:

htmlspecialchars($string, ENT_SUBSTITUTE | ENT_DISALLOWED);

這會將盡可能多的字符轉換為UTF-8,並刪除了所有其他字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM