Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将输入正确转换为HTML字符_Php_Html_Encoding_Character Encoding - Fatal编程技术网

Php 如何将输入正确转换为HTML字符

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内容类型标头,

假设我包含一个包含html的文件。html包含感叹号、西班牙语重音(á、ó)等字符。已解析的包含文本将作为符号而不是其正确值进行处理。这在FF上发生,但在IE(8)上不发生

我尝试了以下功能:

htmlspecialchars、htmlentities、utf8\u编码

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-8
htmlentities
根本不会影响此文本

我用以下代码尝试了同样的东西,效果很好:

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-8
htmlentities
根本不会影响此文本

我用以下代码尝试了同样的东西,效果很好:

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