表单帖子有“%10”由用户编写 - json_decode()失败,urldecode()

问题描述 投票:0回答:3

客户输入“%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()提供的参数无效”

在通过AJAX发送回来时,如何在不导致%10具有不同含义的情况下进行urldecode?

解码似乎产生了那个方形字符,我不能粘贴在这里......你知道......看起来有点像“[]”

*当客户端将其取回时,字符串需要相同 - 他们将其保存为%,他们希望以%返回。 - 有关更换它的任何建议吗?

php json ajax jsondecoder
3个回答
1
投票

%字符用于URL encoding。您可以在传递到服务器之前从前端删除%,也可以在服务器端处理相同的内容。


1
投票

您可以直接对Ajax发送的请求进行编码,如下所示:

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

或者像这样:

JSON.stringify('%10');

在PHP内部,现在只需json_decode(),如下所示。

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

像这样,你的%10将成为"%10",等瞧!


0
投票

请使用以下代码,让我知道它在哪里打破?

<?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>";
    }

?>
© www.soinside.com 2019 - 2024. All rights reserved.