php file_get_contents() 将 html 实体如 ö 转换为 ö
php file_get_contents() converts html entities like ö to ö
我尝试在带有
的文本区域中显示 php 文件的内容
<textarea ...>
<?php echo file_get_contents("file.php"); ?>
</textarea>
但它会将 html 个实体(例如 ö
)转换为 ö。因为它是 php 代码,所以我不能使用像 htmlspecialchars 这样的转换,因为它会使 <> 和引号等变砖
编辑:
我用浏览器查看了源码,确实有一个ö。
请帮忙,谢谢!
我认为你的 file.php
中有一些 non-UTF-8
字符。试试这个:
$content = file_get_contents('/tmp/file.php');
$content = mb_convert_encoding($content, 'UTF-8',mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
print_r($content);
您可以参考此评论http://php.net/manual/en/function.file-get-contents.php#85008。
<textarea ...>
<?php echo htmlentities(file_get_contents("file.php")); ?>
</textarea>
例子
将一些字符转换为 HTML 个实体:
<?php
$str = '<a href="https://www.w3schools.com">Go to w3schools.com</a>';
echo htmlentities($str);
?>
上述代码的 HTML 输出将是(查看源代码):
<a href="https://www.w3schools.com">Go to w3schools.com</a>
以上代码的浏览器输出将是:
<a href="https://www.w3schools.com">Go to w3schools.com</a>
htmlspecialchars 将更改:
< ö
至:
< &ouml;
没关系
它将显示在文本区域中:
< ö
提交表单后,它会发送到服务器文本
< ö
不是:
< &ouml;
在 Chrome 中测试 jQuery:
$('#layout').html('<form method="POST"><textarea name="x"><&ouml;</textarea><input type="submit" /></form>')
我尝试在带有
的文本区域中显示 php 文件的内容<textarea ...>
<?php echo file_get_contents("file.php"); ?>
</textarea>
但它会将 html 个实体(例如 ö
)转换为 ö。因为它是 php 代码,所以我不能使用像 htmlspecialchars 这样的转换,因为它会使 <> 和引号等变砖
编辑:
我用浏览器查看了源码,确实有一个ö。
请帮忙,谢谢!
我认为你的 file.php
中有一些 non-UTF-8
字符。试试这个:
$content = file_get_contents('/tmp/file.php');
$content = mb_convert_encoding($content, 'UTF-8',mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
print_r($content);
您可以参考此评论http://php.net/manual/en/function.file-get-contents.php#85008。
<textarea ...>
<?php echo htmlentities(file_get_contents("file.php")); ?>
</textarea>
例子
将一些字符转换为 HTML 个实体:
<?php
$str = '<a href="https://www.w3schools.com">Go to w3schools.com</a>';
echo htmlentities($str);
?>
上述代码的 HTML 输出将是(查看源代码):
<a href="https://www.w3schools.com">Go to w3schools.com</a>
以上代码的浏览器输出将是:
<a href="https://www.w3schools.com">Go to w3schools.com</a>
htmlspecialchars 将更改:
< ö
至:
< &ouml;
没关系
它将显示在文本区域中:
< ö
提交表单后,它会发送到服务器文本
< ö
不是:
< &ouml;
在 Chrome 中测试 jQuery:
$('#layout').html('<form method="POST"><textarea name="x"><&ouml;</textarea><input type="submit" /></form>')