下面的代码将带有重音符的字符文本转换为文本。但它也转换了我想保留的HTML标签。我怎样才能转换重音字符,并保持所有其他特殊字符完好无损?谢谢。将重音转换为HTML,但忽略标记
$temp = file_get_contents("file.html");
echo htmlentities($temp,ENT_NOQUOTES,'UTF-8');
下面的代码将带有重音符的字符文本转换为文本。但它也转换了我想保留的HTML标签。我怎样才能转换重音字符,并保持所有其他特殊字符完好无损?谢谢。将重音转换为HTML,但忽略标记
$temp = file_get_contents("file.html");
echo htmlentities($temp,ENT_NOQUOTES,'UTF-8');
htmlspecialchars()
htmlspecialchars_decode()
和将只编码/解码&
,<
,>
,'
和"
;因此,你可以使用后者的实体转换回自己的HTML特殊字符:
echo htmlspecialchars_decode(htmlentities($temp, ENT_NOQUOTES, 'UTF-8'), ENT_NOQUOTES);
A,但黑客攻击的,但你可以申请htmlentities()
像你已经做到第一,然后扭转它为标准的XML字符(<
,>
,&
,"
,'
)使用htmlspecialchars_decode()
。这将恢复标签。
这似乎是工作确定
if (!function_exists('make_accents')):
function make_accents($string)
{
//$string = "<p>Angoulême</p>";
$trans = get_html_translation_table(HTML_ENTITIES);
//$encoded = "<p>Angoulême</p>";
$encoded = strtr($string, $trans);
//Next two lines put back the < & > tags
$noHTML = str_replace("<", "<", $encoded);
$encoded = str_replace(">", ">", $noHTML);
return $encoded;
}
endif;
一个页面上同时使用编码和滑动实体时,这也适用(例如:两个`<`和``<)。转换和即时转换的风险是,在某些情况下,部分原始文本可能会无意中丢失。在这种情况下,`<`会变成'<`,然后**所有出现的'<`**都会再次转换为`<`,包括原始文本中出现的所有'<`。 但是,情况并非如此,因为实体分隔符`&`本身也被转换!所以你不必担心文字的意外转换。听起来很明显,但我只是提醒一下。 – 2011-09-08 13:31:40
优秀的解决方案,谢谢 – Codex73 2015-01-15 01:43:13