[英]PHP: show HTML comments
考慮以下 PHP function:
function show_html_comment($comment)
{
echo '<!-- ' . $comment . ' -->';
}
此 function 顯示 HTML 注釋。
但是如果在$comment
里面有一個 HTML 評論呢?
$comment = '<!-- foo -->';
function 的結果將是:
<!-- <!-- foo --> -->
我不希望那樣。 我也不應該顯示字符串的修改版本(例如使用 htmlspecialchars())。 我必須在 HTML 注釋中顯示字符串。
任何人都可以提出解決方案嗎?
您可以使用htmlspecialchars作為評論中提到的@vee,或者如果您非常確定字符串的結構,您可以使用str_replace ,例如:
function show_html_comment($comment)
{
$comment = str_replace('<!--', '', $comment);
$comment = str_replace('-->', '', $comment);
echo '<!-- ' . trim($comment) . ' -->';
}
show_html_comment('<!-- foo -->'); // <!-- foo -->
我在這里發布我調查的內容:
最初的解決方案可能是將 <.-- 和 --> 標記替換為 [!-- --] 或 {!-- --} 或類似的東西。
另一種可能的解決方案是在標記內插入空格。
另一種解決方案可能是用類似的 Unicode 字符替換令牌中的某些字符。 例如,使用連字符 U+2010 代替字符 U+002D,或將 < > 字符替換為類似字符。 例如,您可以發表如下評論:
< !-- ≺!-- ≺!-- foo --≻ --≻ -->
以下是我迄今為止發現的類似字符:
‹ ›
≺ ≻
<>
另一種解決方案可能是在標記內插入不可見字符以“破壞標記”,以便瀏覽器不會將它們檢測為 HTML 注釋。 例如,我想到使用字符 U+200E。
例如:
如果您運行以下代碼,您將在另一個 HTML 注釋中擁有一個帶有 HTML 注釋的文件,並且瀏覽器不會檢測到它:
file_put_contents('test.html', '<!DOCTYPE html><html><body><!-- <' . "\u{200e}" . '!-- foo --' . "\u{200e}" . '> --></body></html>');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.