解码具有特殊字符的URL参数

时间:2017-01-10 06:36:14

标签: php json

我有这样的网址,我希望获得变量的价值" json"但我并没有得到价值和&参数来自"印地语:L& W第3首诗3次。 Soc Science:L& W hard words 5次。"。如何正确获取json的值?

注意:我从app端获得了json的值,所以在将其转换为json字符串之前我无法对字符串进行编码。

http://localhost/abc/sendMsg.php?json={"studentId":"15","msg":"Hindi : L&W 3rd poem 3 times. Soc Science : L&W hard words 5 times."}

3 个答案:

答案 0 :(得分:2)

根据我的理解,客户端浏览器中的应用程序会生成JSON数组。在这种情况下,您应该尝试使用JSON.stringify

<script>
    url = "http://localhost/abc/sendMsg.php?json="+JSON.stringify(yourJSON);
</script>

修改

好的,所以从你的评论中你告诉你是否正在接收PHP中的URL。

  

注意:最佳做法是从Android转义网址。如果在发送之前未进行转义,则会导致某些可能不支持特殊字符的浏览器/应用程序出现问题。有关特定RFC,请参阅此主题:space in url; did browser got smarter or server?

如果不可能作为后备,我建议将网址拆分为仅检索字符串,而不是使用$_GET参数。

您可以尝试以下方式:

<?php 

$urlParts = explode('?json=', 'http://localhost/abc/sendMsg.php?json={"studentId":"15","msg":"Hindi : L&W 3rd poem 3 times. Soc Science : L&W hard words 5 times."}');
$jsonPart = end($urlParts);

$decodedJson = json_decode($jsonPart);

?>

答案 1 :(得分:0)

请使用以下代码

$str='[{"studentId":"15","msg":"Hindi : L&W 3rd poem 3 times. Soc Science : L&W hard words 5 times."}]';
print_r(json_decode($str));

输出

Array ( [0] => stdClass Object ( [studentId] => 15 [msg] => Hindi : L&W 3rd poem 3 times. Soc Science : L&W hard words 5 times. ) )

答案 2 :(得分:0)

使用$ _Request []

获取它后将其转换为数组

然后用于每个循环以获得特定值

foreach ($json_array as $key => $value){
$hindi = $value->Hindi;
 echo $hindi;

}