删除esc_html

时间:2017-05-27 06:59:20

标签: php jquery html

是否可以从输出中删除esc_html,以便将任何HTML链接添加到自定义字段,链接到HTML输出中?

<a href="https://example.com">example.com</a>

这是我的PHP代码:

esc_html( get_post_meta($post->ID, $key, true) ) );

我遇到的问题是没有为PHP添加过滤器,所以我无法修改输出。

也许有一个jQuery解决方案或什么。

当我修改插件中的代码时,它可以工作,但那不是未来的证明。

 get_post_meta($post->ID, $key, true) );

编辑:这是HTML源代码 enter image description here

1 个答案:

答案 0 :(得分:1)

我假设你使用wordpress。您永远不应该绕过验证来信任您的用户。但除了esc_html之外还有其他选择。

查看Data Validation,更具体地说是wp_kses家庭功能。

例如,wp_kses()函数接受三个参数(full tuto here):

  • content - (字符串)通过kses过滤的内容
  • allowed_html - 一个数组,其中每个键都是允许的HTML元素,值是该元素的允许属性数组
  • allowed_protocols - 可选。链接中允许的协议(例如http,mailto,feed等)
因此,

wp_kses()是一个非常灵活的功能,允许您从标记中删除不需要的标记,或者只删除不需要的属性。

示例:

$content = "<em>Click</em> <a title='click for wp.tuts+' href='http://wp.tutsplus.com'>here</a> to visit <strong> wptuts+ </strong>";

echo wp_kses( $content, array(
    'strong' => array(),
    'a' => array('href')
) );

// Prints the HTML "Click <a href='http://wp.tutsplus.com'>here</a> to visit <strong> wptuts+ </strong>":
Click <a href="http://wp.tutsplus.com">here</a> to visit <strong> wptuts+ </strong>

注意:小心但是。正如文档中所指出的那样,“kses系统可能是资源密集型的”。