You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在wp_kses中允许尖括号<和>,避免CSS代码转义?

解决wp_kses保留CSS中尖括号的问题

wp_kses默认会转义HTML特殊字符(包括<和>),因为它的核心作用是过滤不安全的HTML内容。但如果你的CSS代码中需要保留这些符号,可以通过以下几种方式处理:

方法一:使用safe_style_css过滤器修正转义后的字符

wp_kses在处理style属性时会调用safe_style_css过滤器,你可以通过这个钩子把转义后的&lt;和&gt;转回到原始的尖括号:

// 添加过滤器处理CSS内容
add_filter('safe_style_css', 'restore_css_angles', 10, 1);
function restore_css_angles($css_content) {
    // 将转义后的尖括号还原
    $css_content = str_replace('&lt;', '<', $css_content);
    $css_content = str_replace('&gt;', '>', $css_content);
    return $css_content;
}

// 定义允许的HTML标签(根据你的需求调整)
$allowed_tags = array(
    'div' => array(
        'style' => array(),
    ),
    'p' => array(
        'style' => array(),
    ),
    // 其他需要允许的标签及属性
);

// 运行wp_kses过滤
$filtered_content = wp_kses($your_content_with_css, $allowed_tags);

方法二:临时替换占位符绕过转义

如果不想添加全局过滤器,可以先将尖括号替换为唯一占位符,经过wp_kses过滤后再替换回来:

// 用占位符替换尖括号
$temp_content = str_replace('<', '__CSS_LT__', $your_content_with_css);
$temp_content = str_replace('>', '__CSS_GT__', $temp_content);

// 定义允许的标签
$allowed_tags = array(
    'div' => array('style' => array()),
    // 其他标签
);

// 执行过滤
$filtered_content = wp_kses($temp_content, $allowed_tags);

// 替换回原始尖括号
$filtered_content = str_replace('__CSS_LT__', '<', $filtered_content);
$filtered_content = str_replace('__CSS_GT__', '>', $filtered_content);

注意事项

  • 确保你只在可信的内容上使用这些方法,wp_kses的转义机制是为了防止XSS攻击,随意绕过可能带来安全风险。
  • 如果是处理内联CSS,尽量只允许必要的CSS属性,避免引入不安全的样式(比如position: fixed配合恶意内容)。

内容的提问来源于stack exchange,提问作者Dhiraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:50:18