为什么包含 HTML 实体的字符串在通过 htmlspecialchars() 运行 后不显示字符
Why does a string that contains HTML entity not displaying character after being ran through htmlspecialchars()
我有一串文本,从 SQL 然后 运行 通过 PHP strip_tags 和 htmlspecialchars 提取,因为我需要删除我的用户可能尝试添加的所有 HTML 格式。然后它显示在文本区域以及不可编辑的 div 中。 textarea 显示原始 HTML 实体代码(例如 & <),这就是我想要的。至于 div,它是文本区域内容的预览,我希望它显示实际字符(例如 & <)。因此,我需要 div 将任何特殊字符转换为 html 实体,但我希望当前的 HTML 实体显示为字符。
这串文本可能包含很多不同的字符,因为它是餐厅运行t 设备的技术著作,所以它不仅仅是符号和引号。基本上,有足够的列表不是一个容易的选择。
这是我 运行 文本区域和预览的字符串 div:
function removeTags($data) {
$data = strip_tags($data);
$data = htmlspecialchars($data, ENT_HTML5, 'UTF-8');
return $data;
}
这是文本区域显示的内容:
This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.
不幸的是,预览 div 显示了相同的信息,但我希望预览 div 显示下面的行,同时仍然删除任何 HTML 标签以及转换任何特殊字符至 HTML 个实体:
This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.
htmlspecialchars()
函数将某些字符如&
转换为它们的HTML实体,如&
.
此外,如果您想转换所有字符,而不仅仅是 htmlspecialchars()
转换的字符,请改用 htmlentities()
。
然后您可以使用 str_replace()
函数来显示 HTML 个实体。
例如:
$data = "This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.";
$data = "This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.";
function removeTags($data) {
$data = strip_tags($data);
$data = htmlentities($data);
return $data;
}
echo '<textarea cols="95" rows="6">' . str_replace('&', '&', removeTags($data)) . '</textarea>';
echo '<div>' . removeTags($data) . '</div>';
在文本区域中,输出为:
This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.
在div中,输出为:
This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.
我有一串文本,从 SQL 然后 运行 通过 PHP strip_tags 和 htmlspecialchars 提取,因为我需要删除我的用户可能尝试添加的所有 HTML 格式。然后它显示在文本区域以及不可编辑的 div 中。 textarea 显示原始 HTML 实体代码(例如 & <),这就是我想要的。至于 div,它是文本区域内容的预览,我希望它显示实际字符(例如 & <)。因此,我需要 div 将任何特殊字符转换为 html 实体,但我希望当前的 HTML 实体显示为字符。
这串文本可能包含很多不同的字符,因为它是餐厅运行t 设备的技术著作,所以它不仅仅是符号和引号。基本上,有足够的列表不是一个容易的选择。
这是我 运行 文本区域和预览的字符串 div:
function removeTags($data) {
$data = strip_tags($data);
$data = htmlspecialchars($data, ENT_HTML5, 'UTF-8');
return $data;
}
这是文本区域显示的内容:
This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.
不幸的是,预览 div 显示了相同的信息,但我希望预览 div 显示下面的行,同时仍然删除任何 HTML 标签以及转换任何特殊字符至 HTML 个实体:
This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.
htmlspecialchars()
函数将某些字符如&
转换为它们的HTML实体,如&
.
此外,如果您想转换所有字符,而不仅仅是 htmlspecialchars()
转换的字符,请改用 htmlentities()
。
然后您可以使用 str_replace()
函数来显示 HTML 个实体。
例如:
$data = "This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.";
$data = "This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.";
function removeTags($data) {
$data = strip_tags($data);
$data = htmlentities($data);
return $data;
}
echo '<textarea cols="95" rows="6">' . str_replace('&', '&', removeTags($data)) . '</textarea>';
echo '<div>' . removeTags($data) . '</div>';
在文本区域中,输出为:
This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.
在div中,输出为:
This unit has the ability to lower food temperature from 160°F to 38°F, with 110 lbs.