我已经制作了一个运行良好的RestAPI,在我的脚本(核心文件)的顶部,我已声明:
header('Content-Type: application/json;charset=utf-8');
现在的问题是,当我将json从客户端传递给我的API时。此问题通常与POST
和PUT
方法有关。只有当我通过curl传递这种类型的json时才会发生这种情况:
curl -i -d '{"test": "èè"}'
你怎么看我有一些重音字母。所以当我调用这个函数时:
$params = json_decode(file_get_contents("php://input"), true);
$params
变量返回NULL
。相反,如果我的json看起来像这样:
curl -i -d '{"test": "This is a test"}'
所有工作正常,$params
变量具有此值:
array(1) {
["test"]=>
string(14) "This is a test"
}
我猜这个特殊字符引起了这个函数的问题..有人有解决方法吗?
答案 0 :(得分:2)
您可以使用正则表达式来确定输入行是否包含重音字符。
<?php
preg_match("/[À-ÿ].*/", $input_line, $output_array);
if(sizeof($output_array) > 0){
echo "$input_line has accented characters";
}
?>
您还可以查看URL encoding,因为我认为存在问题。