json中的一些隐藏字符编码

时间:2016-06-13 10:44:16

标签: php json string hidden non-ascii-characters

我使用jdate库将格里高利日期转换为jalali并且在爆炸后的日期和月份我发现一些隐藏的字符添加到我的字符串中,当我将它们编码为json时我无法解析它

{
    "result": [{
        "year": " 1394",
        "month": " 6"
    }, {
        "year": " 1394",
        "month": " 7"
    }, {
        "year": " 1394",
        "month": " 8"
    }, {
        "year": " 1394",
        "month": " 9"
    }, {
        "year": " 1394",
        "month": " 10"
    }, {
        "year": " 1394",
        "month": " 11"
    }, {
        "year": " 1394",
        "month": " 12"
    }, {
        "year": " 1395",
        "month": " 1"
    }, {
        "year": " 1395",
        "month": " 2"
    }, {
        "year": " 1395",
        "month": " 3"
    }, {
        "year": " 1395",
        "month": " 4"
    }, {
        "year": " 1395",
        "month": " 5"
    }, {
        "year": " 1395",
        "month": " 6"
    }, {
        "year": " 1395",
        "month": " 7"
    }]
}

我无法删除隐藏的字符,它们放在第一个json字符串中,请帮我解决一下!

这是我的代码:

$termID = (isset($_REQUEST['term_id'])) ? $this->db()->safe($_REQUEST['term_id']) : '';

    $sel="SELECT term_id, term_from_date, term_to_date  FROM  {$this->var->db_perfix}edu_term where term_id=$termID GROUP BY term_id";
    $arrFromTo = $this->db()->q($sel);

    $arrFromTo[0]->{'term_from_date'} = $this->jdate( "Y-m-j" , strtotime($arrFromTo[0]->{'term_from_date'}) );
    $arrFromTo[0]->{'term_to_date'} = $this->jdate( "Y-m-j" , strtotime($arrFromTo[0]->{'term_to_date'}) );

    $fromDate = explode('-', $arrFromTo[0]->{'term_from_date'});

    $fromYear = $fromDate[0];
    $fromMonth = $fromDate[1];

    $toDate = explode('-', $arrFromTo[0]->{'term_to_date'});

    $toYear = $toDate[0];
    $toMonth = $toDate[1];

    $count = $toMonth - $fromMonth + 1 +  ($toYear - $fromYear)*12 ;

    $arrMonth = array();
    $arrMonthNum = array();
    $yearNum = $fromYear;

    $j = 0;

    for($i=0 ; $i<=$count ; $i++){
        $monthNum = ($fromMonth+$i)%12;
        $yearNum += ($monthNum==1)? 1 : 0;
        $monthNum = ($monthNum)? $monthNum : 12;

        $arrMonth['result'][$j]['year'] .= ($count>=12) ? ' '.$yearNum : '' ;
        $arrMonth['result'][$j]['month'] .= ($count>=12) ? ' '.$monthNum : '' ;


        //$arrMonth['result'][$monthNum."-".$yearNum]['year'] .= ($count>=12) ? ' '.$yearNum : '' ;
        // $arrMonth['result'][$monthNum."-".$yearNum]['month'] .= ($count>=12) ? ' '.$monthNum : '' ;

        $gregorian = $this->jalali_to_gregorian($yearNum , $monthNum , 1);
        $monthDuring = $this->lastday($gregorian[1]+1 , 1 , $gregorian[0]);

        $firsDayOfMonth = date("N", mktime(0, 0, 0, $gregorian[1], $gregorian[2] , $gregorian[0]));
        $lastDayOfMonth =  date("N", mktime(0, 0, 0, $gregorian[1], $gregorian[2]+$monthDuring-1 , $gregorian[0]));

        if($firsDayOfMonth==6 or $firsDayOfMonth==7)
            $firsDayOfMonth = $firsDayOfMonth-6;
        else
            $firsDayOfMonth++;

        if($lastDayOfMonth==6 or $lastDayOfMonth==7)
            $lastDayOfMonth = $lastDayOfMonth-6;
        else
            $lastDayOfMonth++;

        $j++;
    }

    $a = trim(json_encode($arrMonth,JSON_UNESCAPED_UNICODE),"\x00..\x1F");

    echo $a;

0 个答案:

没有答案