Php 如何将输入正确转换为HTML字符
假设我包含一个包含html的文件。html包含感叹号、西班牙语重音(á、ó)等字符。已解析的包含文本将作为符号而不是其正确值进行处理。这在FF上发生,但在IE(8)上不发生 我尝试了以下功能: htmlspecialchars、htmlentities、utf8\u编码Php 如何将输入正确转换为HTML字符,php,html,encoding,character-encoding,Php,Html,Encoding,Character Encoding,假设我包含一个包含html的文件。html包含感叹号、西班牙语重音(á、ó)等字符。已解析的包含文本将作为符号而不是其正确值进行处理。这在FF上发生,但在IE(8)上不发生 我尝试了以下功能: htmlspecialchars、htmlentities、utf8\u编码 include htmlentities("cont/file.php"); 示例file.php内容: <div>Canción, “Song Name”</div> 输出一个HTTP内容类型标头,
include htmlentities("cont/file.php");
示例file.php内容:
<div>Canción, “Song Name”</div>
输出一个HTTP内容类型标头,该标头指定在中使用的(建议使用UTF-8) 输出一个HTTP内容类型标头,该标头指定您在中使用的(建议使用UTF-8) 您的代码只通过htmlentities()运行字符串“cont/fie.php”,文件内容不受此影响。您的代码只通过htmlenties()运行字符串“cont/fie.php”,文件内容不受此影响。echo htmlenties(file_get_contents(“cont/file.php”)代码>是您可能要问的问题。
但是,如前所述,您不能使用htmlentities,而必须使用UTB-8编码
echo htmlentities(file\u get\u contents(“cont/file.php”)代码>是您可能要问的问题。
但是,如前所述,您不能使用htmlentities,而应使用UTB-8编码您应该在查看此内容的HTML页面上将编码设置为UTF-8htmlentities
根本不会影响此文本
我用以下代码尝试了同样的东西,效果很好:
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>TODO supply a title</title>
</head>
<body>
<p>
TODO write content
<?php
include "test.php";
?>
</p>
</body>
</html>
<div>ääääääó</div>
提供头衔
TODO写入内容
test.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>TODO supply a title</title>
</head>
<body>
<p>
TODO write content
<?php
include "test.php";
?>
</p>
</body>
</html>
<div>ääääääó</div>
äääääó
您应该在查看此内容的HTML页面上将编码设置为UTF-8htmlentities
根本不会影响此文本
我用以下代码尝试了同样的东西,效果很好:
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>TODO supply a title</title>
</head>
<body>
<p>
TODO write content
<?php
include "test.php";
?>
</p>
</body>
</html>
<div>ääääääó</div>
提供头衔
TODO写入内容
test.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>TODO supply a title</title>
</head>
<body>
<p>
TODO write content
<?php
include "test.php";
?>
</p>
</body>
</html>
<div>ääääääó</div>
äääääó
这就是你的代码和我的代码的不同之处;原因很难知道,但与解析有关
这是显示的浏览器(FF+IE)-->
示例**(“include”函数未使用,因此不需要输出缓冲区):
谢谢你帮我弄明白了“Ondrej Slinták” 这就是你的代码和我的代码在两种不同的情况下工作的结果;原因很难知道,但与解析有关
这是显示的浏览器(FF+IE)-->
示例**(“include”函数未使用,因此不需要输出缓冲区):
谢谢你帮我弄明白了“Ondrej Slinták” 我只需要在include文件中搜索特殊字符,并在include之前转换为html实体。@Codex73如果您已经使用utf-8,并且您的文本在utf-8中确实
,则不需要将字符转换为实体。只需抛出htmlentities即可。我只需在包含文件中搜索特殊字符,并在包含之前转换为html实体。@Codex73如果您已经使用utf-8,并且您的文本在utf-8中确实,则无需将字符转换为实体。只要扔掉htmlentities,我就用这个:试着检查你的浏览器的编码。也许出于某种原因,它被设置为不同的东西。我已经试过你的代码了,效果不错。我将用我尝试过的代码编辑我的帖子。如果只在FF中发生,你确定不使用浏览器编码重写页面编码吗?你能试试其他浏览器吗?只是为了确保这是FF内部的错误,而不是PHP端的错误。另外,请尝试检查PHP.ini中的default\u charset
,没问题!我很高兴你找到了答案:我正在使用这个:尝试检查你的浏览器的编码。也许出于某种原因,它被设置为不同的东西。我已经试过你的代码了,效果不错。我将用我尝试过的代码编辑我的帖子。如果只在FF中发生,你确定不使用浏览器编码重写页面编码吗?你能试试其他浏览器吗?只是为了确保这是FF内部的错误,而不是PHP端的错误。另外,请尝试检查PHP.ini中的default\u charset
,没问题!我很高兴你明白了:D