在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接受字体-家庭与"?
发布于 2018-06-29 16:24:44
您不应该试图让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 );https://stackoverflow.com/questions/51105406
复制相似问题