我有一个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
)
) );
答案 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
)
) );