在PHP中接收JSON POST,并在其中一个字段值中输入ENTER

在PHP中接收JSON POST,并在其中一个字段值中输入ENTER,php,json,Php,Json,当“描述”字段有“回车”(换行)时,API失败 用于检查用户发送的所有参数的图像 下面是从发布的JSON获取数据的代码 // get posted data $jason_value = json_decode(file_get_contents("php://input")); $crm_id = $jason_value->data->crmId; $descriptions = $jason_value->data->de

当“描述”字段有“回车”(换行)时,API失败

用于检查用户发送的所有参数的图像

下面是从发布的JSON获取数据的代码

     // get posted data
     $jason_value = json_decode(file_get_contents("php://input"));
     $crm_id = $jason_value->data->crmId;
     $descriptions = $jason_value->data->descriptions;
我想接受一行字符串形式的描述

descriptions=“10+windows现代风格7057655959”

我无权访问用户在其中输入说明的程序,我可以在其中添加验证并将其转换为\n

转换后得到低于字符串的值

{ "jwt": "eyJ0", "data": { "crmId": "15876047", "geoconceptAppointmentId": "15876","geoconceptCustomerId": "15876047","status": "Rejected","appointmentDateTime": "","firstName": "Nick Test","lastName": "PA","address": "9112 RUE Tom","city": "MONTREAL","state": "QC","zip": "H2N1T1","country": "CAN","phoneNumber1": "5148332222","phoneNumber2": "5148332222","email": "nbskgg@gmail.com","dateEntry": "2019-06-20 12:02","dateModify": "2019-06-20 12:02","preferredWayToContact": "","textMsgFlag": "Y","hearAboutUs": "Referral","perferredTime": "Anytime","descriptions": "I have to call at 5" pm. ","worklog": "This is the comment ","rejectReason": "Area | Region","referredByDC": "09999","referredByStoreUsername": "store215","assignedUsername": "","createdByUsername": "np","modifiedByUsername": "np","btgMarket": "Montreal"}}


在PHP7+中,文本选项卡或换行符将导致json解析失败,这是正确的<代码>文件获取内容(“php://input“”返回一个字符串,所以我看不出有什么理由不能在尝试解析它之前过滤它。但也许我错过了什么

//Catch Unix OR DOS line endings, but not both
$filter = Array("\n","\n\r");
$replace = " ";
$cleanJSON = str_replace($filter, $replace, file_get_contents("php://input");
$data = json_decode($cleanJSON));
我想指出,在这一点之后,您的代码引用了一个不存在的变量:
$jason\u value

$crm_id = $jason_value->data->crmId;
$descriptions = $jason_value->data->descriptions;
要引用刚刚创建的对象的属性,请直接转到
$data

$crm_id = $data->crmId;
$descriptions = $data->descriptions;

我想你会想用一个空格来替换换行符,但如果你实际遇到的换行符前面有空格,你可能只需要一个空字符串,但这是不可能从我们的换行符中分辨出来的

好的。。那么问题出在哪里?@Andreas,API失败了,因为在描述中有“回车”换行符什么是
$jason_值
?您给出的代码中不存在该变量us@parttimeturtle,编辑了问题。谢谢你的提示。上面的代码有一些问题,但是使用了这个简单的版本“``$cleanJSON=trim(preg\u replace('/\s+/'),'',file\u get\u contents('php://input")));我还有一个问题是“在描述中”有什么管理的提示吗?例如“描述”:“10”windows,modsddernd“,@Nick如果你没有看到JSON字符串在过滤后的样子,我无法告诉你。您已经将此标记为已回答,因此,如果您有新问题,您应该打开一个新问题,以便我们可以查看您从那以后一直在做什么。请检查有问题的字符串