簡體   English   中英

PHP:顯示 HTML 評論

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM