插件窝 干货文章 php+如何去掉编辑器中的样式

php+如何去掉编辑器中的样式

HTML 去掉 样式 strong 572    来源:    2025-03-18

在PHP中,如果你想要去掉从富文本编辑器(如TinyMCE、CKEditor等)中获取的HTML内容中的样式,可以使用以下几种方法:

方法1:使用PHP的strip_tags函数

strip_tags函数可以去掉HTML标签,但保留指定的标签。如果你只想去掉样式标签(如<style>)和内联样式(如style="..."),可以使用正则表达式来进一步处理。

$html = '<p style="color:red;">This is a <strong>test</strong>.</p>';
$stripped = strip_tags($html, '<p><strong>'); // 保留<p>和<strong>标签
echo $stripped;

方法2:使用正则表达式去掉内联样式

如果你只想去掉内联样式(如style="..."),可以使用正则表达式:

$html = '<p style="color:red;">This is a <strong>test</strong>.</p>';
$cleaned = preg_replace('/<[^>]*style\s*=\s*"[^"]*"[^>]*>/', '', $html);
echo $cleaned;

方法3:使用DOMDocument类

DOMDocument类可以更精确地操作HTML文档。你可以遍历DOM树并去掉不需要的样式。

$html = '<p style="color:red;">This is a <strong>test</strong>.</p>';

$dom = new DOMDocument();
@$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));

$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//*[@style]');

foreach ($nodes as $node) {
    $node->removeAttribute('style');
}

$cleaned = $dom->saveHTML();
echo $cleaned;

方法4:使用第三方库(如HTML Purifier)

HTML Purifier是一个强大的PHP库,可以过滤HTML内容并去掉不需要的样式、脚本等。

首先,你需要安装HTML Purifier库:

composer require ezyang/htmlpurifier

然后使用以下代码:

require_once 'vendor/autoload.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);

$html = '<p style="color:red;">This is a <strong>test</strong>.</p>';
$cleaned = $purifier->purify($html);

echo $cleaned;

总结

  • strip_tags:简单去掉所有HTML标签,但可以指定保留某些标签。
  • 正则表达式:适合去掉特定的样式标签或内联样式。
  • DOMDocument:适合需要精确操作HTML文档的场景。
  • HTML Purifier:适合需要高度定制化过滤的场景,功能强大但相对复杂。

根据你的需求选择合适的方法。