在使用wp_remote_post之前清理HTML内容

时间:2016-04-15 07:29:08

标签: php json wordpress

我有一个WordPress插件,它会收集帖子的信息,如帖子标题,发布内容,并发送到第三方应用程序进行一些分析。

基本上会将帖子标题和帖子内容存储到数组中,将数组编码为JSON格式并通过wp_remote_post发送到第三方应用程序。我在帖子内容中面临挑战,可能包含一些html标签并毁掉我的JSON数据。

如何防止帖子内容破坏我的JSON数据?我应该消毒还是以其他方式消毒?

示例代码如下:

$args = array(
    'title' => get_the_title(),
    'content' => get_the_content()
);

$json = json_encode($args);

wp_remote_post( 'http://dummydomain.com/', array(
    'body' => array(
        'data' => $args
    )
) );

1 个答案:

答案 0 :(得分:0)

您需要做的就是将其他标志传递给json_encode,以通知它您的代码可以包含HTML标记。传递这两个标志就足够了:

  

JSON_HEX_TAG - 全部<和>转换为\ u003C和\ u003E。从PHP 5.3.0开始提供。   JSON_HEX_QUOT - 全部"转换为\ u0022。自PHP 5.3.0起可用。

http://php.net/manual/en/json.constants.php

您的代码可能如下所示:

$args = array(
    'title' => get_the_title(),
    'content' => get_the_content()
);

$json = json_encode($args, JSON_HEX_TAG | JSON_HEX_QUOT);

wp_remote_post( 'http://dummydomain.com/', array(
    'body' => array(
        'data' => $json
    )
) );