下面的代碼將帶有重音符的字符文本轉換爲文本。但它也轉換了我想保留的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