Escaping crashes my output

时间:2020-05-26 作者:Faruk rıza

当我向以下变量添加wordpress转义代码(如esc\\u attr\\u e)时,它会将文本而不是html代码写入浏览器:

   <?php echo esc_attr_e( $redux_demo[\'editor-text-header-left\'], \'hekim\' ); ?>
当我删除转义代码时,该变量给出html代码。

现在,它给出了以下文本:

<a href="#"><i class="fa fa-medkit text-thm2"></i> Help | </a><a href="#">Forum | </a><a href="#">Skype | </a><a href="#">Mon - Sat 9.00 - 19.00</a>
我怎样才能正确地逃脱它?

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

这里有几个问题:

  1. echo esc_attr_e 应该是公正的esc_attr_e, 这个_e 意味着它已经是echo的了esc_attr_e 不仅仅是一个转义函数,它还是一个本地化API,它是echo esc_attr( __(
  2. esc_attr 去掉HTML,它用于不允许使用HTML标记的HTML属性内部
  3. 绝不能将变量和动态值传递到本地化函数中如果要转义包含基本HTML(如段落等)的字符串,请使用wp_kses_post, e、 g.:

    echo wp_kses_post( $redux_demo[\'editor-text-header-left\'] );
    

相关推荐

Disable escaping html

我在用SyntaxHighlighter Evolved 突出显示代码示例。E、 g。[csharp] string s = \"text\"; List<int> numbers = new List<int>(); [/csharp] 当我第一次保存它时,没关系,但编辑wordpress时,文本会更改为[csharp] string s = &quot;text&quot;; List&lt;int&am