В записи формы "%10" написано пользователем - json_decode() завершается неудачно с помощью urldecode()
Было так здорово, что клиент набрал "%10" вместо "10%"
0_о
$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 ответа
Символ% используется в кодировке URL. Либо вы удаляете% из внешнего интерфейса перед передачей на сервер, либо вы делаете то же самое на стороне сервера.
Вы можете закодировать ваш запрос, отправленный Ajax напрямую, например:
$.ajax({
type:'POST',
dataType: 'json',
...
Или вот так:
JSON.stringify('%10');
Внутри вашего PHP, просто json_decode()
сейчас, как показано ниже.
$PACKAGE_json_decode = json_decode($_POST['textarea']);
Вот так, твой %10
станет "%10"
, и вуаля!!!
Пожалуйста, используйте следующий код и дайте мне знать, где он взломал?
<?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>";
}
?>