gpt4 book ai didi

不转换html标签的PHP htmlentities()

转载 作者:可可西里 更新时间:2023-11-01 13:48:19 25 4
gpt4 key购买 nike

我找到了一些提到这个问题的帖子,但没有一个能完全解决它。

我需要一个函数来输出内容,以 htmlentities() 的方式转换所有特殊字符,但保留所有 html 标签。

我尝试了很多不同的方法,但正如我上面提到的 - 它们都没有按预期工作。

我想知道是否有一种方法可以使用 PHP 类 DomDocument 来完成。

我尝试使用以下方法来做到这一点:

$objDom = new DOMDocument('1.0', 'utf-8');
$objDom->loadhtml($content);
return $objDom->savehtml();

这有效,但它也添加了页面的整个结构,即

<head><body> etc.

我只需要转换 $content 变量的内容并完成工作。

这里值得一提的另一件事是 $content 也可能将一些字符转换为 xhtml complaint - 因为它来自 Wysiwyg。所以它可能包含 & 等,这些也应该被保留。

任何人都知道用 DomDocument 做这件事的方法——也许我应该使用不同的保存方法?

好的 - 我已经想出了以下 - 不是很好,但工作地点:

$objDom = new DOMDocument('1.0', 'UTF-8');
$objDom->loadHTML($string);
$output = $objDom->saveXML($objDom->documentElement);
$output = str_replace('<html><body>', '', $output);
$output = str_replace('</body></html>', '', $output);
$output = str_replace('&#13;', '', $output);
return $output;

如果有更好的想法,我们将不胜感激。

最佳答案

你可以使用 get_html_translation_table 并删除 <>项目:

$trans = get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES);
unset($trans['<'], $trans['>']);
$output = strtr($input, $trans);

关于不转换html标签的PHP htmlentities(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6331668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com