1

file_get_contentsで奇妙な問題に直面しており、その結果を json にデコードしています。このコードは他のサーバーで完全に機能していたことをお伝えしなければなりません。

このjsonをデコードしようとしています: http://mediarupt.com/GET/categorized_services_for_supplier.php?suppliersID=10

このページに: http://mediarupt.com/kostas.php

kostas.php のコードは次のとおりです。

<?php 
$servicesJSON = file_get_contents("http://mediarupt.com/GET/categorized_services_for_supplier.php?suppliersID=10");
$ForeignKeys = (object)array();
$ForeignKeys->ServicesList = json_decode($servicesJSON, true);

echo "error: " . json_last_error();

?>

<select name="servicesID" id="servicesID">
    <option id="serviceID_0" value="0" rel="0" style="font-style:italic;">Select a category...</option>
<?php foreach($ForeignKeys->ServicesList['categorized_services'] as $value){ ?>
    <option id="serviceID_<?=$value['servicesID']?>" value="<?=$value['servicesID']?>" rel="<?=$value['hasStoresList']?>"><?=$value['serviceName']?></option>   

<?php } ?>

</select>
<?php

echo '<br><br>The result of file_get_contents ($servicesJSON): '.$servicesJSON;

?>

categorized_services_for_supplier.php のコード:

<?php header('Content-Type: application/json');
    require('../settings/dbli.php');

    $table = array();
    $suppliersID = "0";

    if(isset($_GET['suppliersID']) && $_GET['suppliersID']!=NULL && $_GET['suppliersID']!='' ){  $suppliersID = $SQLConn->real_escape_string($_GET['suppliersID']); }
    $query = "SELECT DISTINCT Services.servicesID, serviceName, servicePrice, hasStoresList FROM Services, ServicesList WHERE Services.servicesID = ServicesList.servicesID AND suppliersID = '$suppliersID' AND  status = '1' AND deleted = '0'";

    $result = $SQLConn->query($query);  
     while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $tempArray = array();
        foreach($row as $key => $value){
            $tempArray[$key] = $value;                      
        }
        array_push($table,$tempArray);
     }
     $arr = array( "categorized_services" => $table);
    echo json_encode($arr);
?>

エラー4が最新の json エラーとして表示されます。これは、 JSON_ERROR_SYNTAXがあることを意味します。しかし、 http://jsonlint.com/で json の結果を検証したところ、すべて問題ないようです。

また、どちらのページも BOM を無効にした UTF-8 です。ここでphp設定にアクセスできます:http://mediarupt.com/phpinfo.php

私は解決策を見つけることを願っています...

前もって感謝します

4

2 に答える 2

0

json は単純に無効です。

最初の開き中括弧の前に、次の内容があります (16 進数でエンコード)ef bb bf ef bb bf

それはutf8 bomです。

まさにそれに対処することに関連する質問があるので、ここでは取り上げません。ここを読んでください:

PHP 文字列で %EF%BB%BF を削除する方法

ここで特にjsonを扱う別のもの:

Python で BOM 付きの UTF-8 を BOM なしの UTF-8 に変換する

于 2013-06-16T18:07:39.387 に答える
-1

http://jsonlint.com/JSON URLに入力してみてください。応答をコピーして無効にしたファイルに貼り付けるよりも、開始ブラケットの前に奇妙な小さな行があり、これが問題を引き起こしていることに気付くでしょう。BOM{

于 2013-06-16T18:00:01.817 に答える