2016-04-15 3 views
0

У меня есть плагин WordPress, который будет собирать информацию о сообщении, такую ​​как сообщение, опубликовать содержимое и отправить стороннему приложению для проведения некоторого анализа.Sanitize HTML Content перед использованием wp_remote_post

В основном будет хранить заголовок и опубликовать содержимое в массиве, закодировать массив в формате 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

Все, что вам нужно сделать, это передать дополнительные флаги 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 
    ) 
)); 
..
Смежные вопросы