HTML 特殊字符显示不正确
HTML special characters not displayed properly
我有两个 PHP 文件,当我从这些页面上的数据库中获取数据并使用 print_r
显示它们时,两个页面都以不同的方式显示内容。
实际上我的内容中有一些 HTML 特殊字符,我在 MySQL 数据库中的字符串前使用 htmlspecialchars
进行了转义。
当我获取它们时在 page1.php 上显示它显示为
My ‘pop’ to display
但在 page2.php 上显示为
My ‘pop’ to display
我还想提一下 page1.php 是我的网页,我有 print_r 只是为了检查 page2.php 上的问题,其中 page2.php 是 api 我使用 echo json_encode 写入数据的页面,但为了检查问题,我将其替换为 print_r
对于显示,请使用此代码。
$message = "My ‘pop’ to display";
echo htmlspecialchars($messge, ENT_QUOTES, 'UTF-8');
终于找到解决办法了。因为我在数据库中的数据已经使用 htmlspecialchars 进行了操作,即使在删除 htmlspecialchars 之后我也无法将数据更正为我找到了将所有 html 编码字符转换回的解决方案原创
这是执行此操作的简单代码
$input = "This is the ‘text’ I fetched";
$output = preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $input);
echo $output;
参考:http://www.codewithasp.net/2016/11/html-entity-decode-to-original-php.html
已更新
或者,我们也可以使用 html_entity_decode 来执行我在 tadman 的评论后发现的相同操作。
我有两个 PHP 文件,当我从这些页面上的数据库中获取数据并使用 print_r
显示它们时,两个页面都以不同的方式显示内容。
实际上我的内容中有一些 HTML 特殊字符,我在 MySQL 数据库中的字符串前使用 htmlspecialchars
进行了转义。
当我获取它们时在 page1.php 上显示它显示为
My ‘pop’ to display
但在 page2.php 上显示为
My ‘pop’ to display
我还想提一下 page1.php 是我的网页,我有 print_r 只是为了检查 page2.php 上的问题,其中 page2.php 是 api 我使用 echo json_encode 写入数据的页面,但为了检查问题,我将其替换为 print_r
对于显示,请使用此代码。
$message = "My ‘pop’ to display";
echo htmlspecialchars($messge, ENT_QUOTES, 'UTF-8');
终于找到解决办法了。因为我在数据库中的数据已经使用 htmlspecialchars 进行了操作,即使在删除 htmlspecialchars 之后我也无法将数据更正为我找到了将所有 html 编码字符转换回的解决方案原创
这是执行此操作的简单代码
$input = "This is the ‘text’ I fetched";
$output = preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $input);
echo $output;
参考:http://www.codewithasp.net/2016/11/html-entity-decode-to-original-php.html
已更新
或者,我们也可以使用 html_entity_decode 来执行我在 tadman 的评论后发现的相同操作。