您现在的位置是:首页 >其他 >PHP接收到的字符串中含有不可见字符的问题和处理方法网站首页其他

PHP接收到的字符串中含有不可见字符的问题和处理方法

chengg0769 2023-06-21 00:00:03
简介PHP接收到的字符串中含有不可见字符的问题和处理方法

 一个pb客户端用iinet.PostURL(ls_url,lblb_args,ls_header,port,ir)传进来的json。格式是没有问题的。用echo可以显示是正常的。只是无法转换成php的数组和对象(json)。所以调试中耽搁了很多时间,特别写下来以备大家的不时之需。

原因:"php://input"收到的字符串中有不可见字符串(也可能是很多空格在末尾)。造成 json_decode无法处理。

解决办法:rtrim()

//取master和detail   转载自: http://www.powerbuilder.ltd

$postjson = file_get_contents("php://input");

    //debug数据

    /*$postjson = '{"main_order_id":"' . "2023042123341329795" .

    '","order_id":'. "1" .

    ',"status":"' . "true" .

    '","break_id":' . "11" .

    ',"false_reason":"' . "出票成功" .

    '","alipay_trade_no":"' . "123456789" .

    '","ticket_12306_id":"' . "12306123456" .

    '","alipay_account":"' . "22@22.com" .

    '","tickets":[' .

    '{"sub_order_id":"' . "1" .

    '","certificate_num":"' . "301121201805159415" .

    '","real_ticket_price":"' . "111.00" .

    '","buy_coach":"' . "05" .

    '","buy_seat_number":"' . "25C" .

    '","buy_bunk":"' . "" . '"},' .

    '{"sub_order_id":"' . "2" .

        '","certificate_num":"' . "360983201705067823" .

        '","real_ticket_price":"' . "111.00" .

        '","buy_coach":"' . "05" .

        '","buy_seat_number":"' . "25A" .

        '","buy_bunk":"' . ""  . '"}' .

    ']}'; */

//解析json

$postjson = rtrim($postjson);   //json_decode输出时是null,所以通过echo "|aaa|" . $postjson . "|bbb|";  输出时,发现有aaa没有bbb。考虑是字符串后面有不可见字符。所以造成json_decode无法工作。

//json转对象

$postarr = json_decode($postjson);    

var_dump($postarr);    

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。