В записи формы "% 10" написано пользователем - json_decode () завершается неудачно с помощью urldecode () - PullRequest
0 голосов
/ 06 октября 2018

Было так здорово, что клиент набрал "% 10 " вместо " 10% "

0_o

$PACKAGE_json_decode = json_decode(urldecode(($_POST['textarea']), true);

print_r($PACKAGE_json_decode); // LENGTH 0


foreach($PACKAGE_json_decode as $row){
}

ОШИБКА: «Сообщение: для foreach () предоставлен неверный аргумент»

Как мне urldecode, не заставляя% 10 принимать другое значение при отправке обратно через AJAX?

И декодирование, кажется, производит тот квадратный символ, который я не могу вставить здесь ... вы знаете ... выглядит как "[]"

* Строка должна быть одинаковой для клиента, когда он его возвращает- они сохраняют его с%, они хотят вернуть его с%.- Есть предложения по его замене?

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Символ% используется в кодировке URL .Либо вы удаляете% из внешнего интерфейса перед передачей на сервер, либо вы делаете то же самое на стороне сервера.

0 голосов
/ 10 октября 2018

Пожалуйста, используйте следующий код и дайте мне знать, где он взломал?

<?php

    $url_encode = urldecode("sampleTextWith%");
    echo '<b>Ecoded URL </b>'. $url_encode."<br>";

    $obj = new StdClass();
    $obj->text = $url_encode;

    $encoded_json = json_encode($obj);
    echo '<b>Encoded JSON </b>'. $encoded_json."<br>";

    $decoded_json = json_decode($encoded_json);

    echo "<b>Decoded JSON </b>";

    print_r($decoded_json);

    echo "<br>";

    foreach($decoded_json as $row){
        echo "<b>Row Value : </b>". $row."<br>";
    }

?>
0 голосов
/ 06 октября 2018

Вы можете закодировать ваш запрос, отправленный Ajax напрямую, например:

$.ajax({
    type:'POST',
    dataType: 'json',
    ...

Или вот так:

JSON.stringify('%10');

Внутри вашего PHP, просто json_decode() сейчас, какниже.

$PACKAGE_json_decode = json_decode($_POST['textarea']);

Таким образом, ваш %10 станет "%10", et voila !!!

...