在WordPress中,我有一个无法控制(用户生成的)内容的字符串。例如,假设您有以下内容:
$string = 'before <p class="test-class" style="font-family: "Brush Script Mt";">text</p> after';
,然后需要在其上使用wp_kses,但是样式部分已被完全删除:
$a = wp_kses( $string, array(
'p' => array(
'class' => array(),
'style' => array()
)
) );
var_dump( $a ); // returns 'before <p class="test-class">text</p> after'
但是,如果您删除了"
部分,则wp_kses确实可以正常工作:
$string = 'before <p class="test-class" style="font-family: Brush Script Mt;">text</p> after';
现在可以输出
$b = wp_kses( $string, array(
'p' => array(
'class' => array(),
'style' => array()
)
) );
var_dump( $b ); // returns 'before <p class="test-class" style="font-family: Brush Script Mt">text</p> after'
我无法更改源字体家族,它总是带有字体家族名称(“)的引号,并且我还需要在字符串上使用wp_kses。
有什么方法可以使wp_kses接受带有“?”的字体系列?
答案 0 :(得分:0)
您不应尝试获取wp_kses()
来接受损坏的HTML。您可能应该用单引号(撇号)代替"
或将其删除。
如果要保留这些报价,您将得出:
before <p class="test-class" style="font-family: "Brush Script Mt";">text</p> after
那些嵌套的引号会破坏HTML。希望样式属性保留为style="font-family: "
,其余的留给浏览器希望。
所以我要添加:
$string = str_replace( """, "", $string );