html pre 转义,在 pre 标签中,转义HTML字符_php_开发99编程知识库

dr ;博士

你需要解析輸入 HTML 。 使用 DOMDocument 類表示文檔,解析輸入,查找所有

 標記( 使用 findElementsByTagName ),並退出它們的內容。

代碼

不幸的是,DOM模型非常低,並強制你自己循環訪問

 標記的子節點,以便轉移它們。 如下所示:function escapeRecursively($node) {

if ($node instanceof DOMText)

return $node->textContent;

$children = $node->childNodes;

$content ="nodeName>";

for ($i = 0; $i length; $i += 1) {

$child = $children->item($i);

$content. = escapeRecursively($child);

}

return"$content$node->nodeName>";

}

現在,這裡函數可以用於轉義文檔中的每個

 節點:function escapePreformattedCode($html) {

$doc = new DOMDocument();

$doc->loadHTML($html);

$pres = $doc->getElementsByTagName('pre');

for ($i = 0; $i length; $i += 1) {

$node = $pres->item($i);

$children = $node->childNodes;

$content = '';

for ($j = 0; $j length; $j += 1) {

$child = $children->item($j);

$content. = escapeRecursively($child);

}

$node->nodeValue = htmlspecialchars($content);

}

return $doc->saveHTML();

}

測試$string = '

Test

Some interesting text
';

echo escapePreformattedCode($string);

產量:

Test

Some <em>interesting</em> text

請注意,DOM總是表示一個完整的完整的文檔文檔。 因此當DOM解析器獲取文檔 fragment 時,它會填充丟失的信息。 這使得輸出與輸入有潛在的不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值