Printing HTML codes

时间:2018-10-01 作者:Jerry

我是PHP新手,这是评论中的一段代码。php文件:

printf(
                    /* translators: 1: title. */
                    esc_html__( \'<hr><Thoughts about \'. get_the_title() .\'<hr>\', \'rainbowcats\' ),
                    \'<span>\' . get_post_meta($post->ID, \'usp_title\',true) . \'</span>\'
                );
正如你可能猜到的,它会打印<hr>

不管怎样,围绕着这个?(记住,我是个新手,以前从未使用过printf命令。。

1 个回复
最合适的回答,由SO网友:Camille V. 整理而成

如果我能很好地理解你的问题,你的结果就会表明你<hr> 以文本形式。

当您使用esc_html__( string $text, string $domain = \'default\' ), 返回的输出被转义,这意味着:

  • " 替换为&quot;
  • & 替换为&amp;
  • < 替换为&lt;
  • > 替换为&gt;<hr> 返回为文本,而不是html标记。

    要解决这个问题,您只需移动<hr> 在您的esc_html__() :

    <?php printf(
        \'<hr>\'.esc_html__( \'Thoughts about \'. get_the_title(), \'rainbowcats\' ).\'<hr>\';
    ); ?>
    
    此外,我不明白你想用什么来实现目标\'<span>\' . get_post_meta($post->ID, \'usp_title\',true) . \'</span>\' 作为printf(format,arg), 你应该用%s 在第一个参数中。但要记住把它放在外面esc_html__() !有关更多信息,请参阅:https://www.w3schools.com/php/func_string_printf.asp

结束