Задать вопрос
@atanatis

Почему json_decode не выполняется?

Здравствуйте.

При получении JSON файла и последующем декодинге выполнение скрипта просто завершается.
Какая вообще задача:

У меня есть html форма, в ней поле, в коротое помещается URL любого сайта. Далее я получаю эту страницу и зашифровываю (json_encode).

Следующем шагом мне нужно передать эту страницу для обработки другому скрипту. Он отправляется и помещается в $_POST, но при выполнении json_decode зашершается.

PHPStorm выдает следующее:
It may be caused by path mappings misconfiguration or not synchronized local and remote projects. To figure out the problem check path mappings configuration for 'test 3.local' server at PHP|Servers or enable 'Break at first line in PHP scripts' option (from Run menu).


Вот весь код (файл с формой):
function getPage()
{
    $link = trim($_POST['url']);

    $curl = curl_init($link);
    curl_setopt($curl, CURLOPT_HTTPGET, 1);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    return curl_exec($curl);

}

$contentSite = getPage();
$contentSite_json = json_encode($contentSite);

$url = 'http://test3.local/HtmlProcessor.php';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $contentSite_json);

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);


Второй файл:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $replacement = json_decode($_POST, 0);
    $pattern = '/\<a\s.*?\>(.*?)\<\/a\>/iums';
    $formatted_text = preg_replace($pattern, '', $replacement);

    if (!is_null($formatted_text)) {
        echo $formatted_text;
    } else {
        http_response_code(500);
    }
}
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Он отправляется и помещается в $_POST, но при выполнении json_decode зашершается.
Очевидно, что в $_POST ничего нет. В этом легко убедиться сделав var_dump($_POST) во втором файле.

Что делать:
Во первых не понятно зачем паковать в json? Чем не угодила уже имеющаяся строка?
Во вторых - если пакуете в json, так уже и заголовок нужен соответствующий.
Ну и в третьих, так как вы не задали передаваемые данные в формате ключ-значение, в $_POST они не попадут, их надо тащить из инпут потока.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽