ホームページ > バックエンド開発 > PHPチュートリアル > json_decode は返されたデータを解析できません

json_decode は返されたデータを解析できません

WBOY
リリース: 2016-06-23 09:09:36
オリジナル
1144 人が閲覧しました

サーバー:

function order_kb(){    $orderaddress[0]['odd']='560860393435';    $this->ajaxReturn($orderaddress,'JSON');}
ログイン後にコピー
ログイン後にコピー


クライアント:
<?php$post_data = array () ;$url = 'http://www.danhaoxia.com/index.php?m=user&a=order_kb' ;$o = "" ;foreach ($post_data as $k=>$v){    $o.="$k=".urlencode($v)."&";}$data=substr($o,0,-1);$ch = curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER,0);curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);$result = curl_exec($ch);curl_close($curl);print_r('Client:'.$result.'|');print_r('Decode:'.json_decode($result,true).'|');?>
ログイン後にコピー
ログイン後にコピー

データは取得されました [{"odd":"560860393435"}] が解析できません


ディスカッションに返信 (解決策を解決する) )

印刷時に文字列と配列を結合するとエラーにならないでしょうか? ?

サーバー:

function order_kb(){    $orderaddress[0]['odd']='560860393435';    $this->ajaxReturn($orderaddress,'JSON');}
ログイン後にコピー
ログイン後にコピー


クライアント:
<?php$post_data = array () ;$url = 'http://www.danhaoxia.com/index.php?m=user&a=order_kb' ;$o = "" ;foreach ($post_data as $k=>$v){    $o.="$k=".urlencode($v)."&";}$data=substr($o,0,-1);$ch = curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER,0);curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);$result = curl_exec($ch);curl_close($curl);print_r('Client:'.$result.'|');print_r('Decode:'.json_decode($result,true).'|');?>
ログイン後にコピー
ログイン後にコピー

データは取得されました [{"odd":"560860393435"}] ですが、解析できません

いいえ

print_r('Client:'.$result. '|');
Client:锘縖{"odd":"560860393435"}]| を取得します
明らかに BOM ヘッダーがあります
したがって、これが必要です
print_r(json_decode(substr($result, 3), true)) ;
Get
Array
(
[0] =>


印刷時に文字列と配列を組み合わせるとエラーにならないでしょうか? ?
いいえ、文字列を削除しても同じ結果が得られます

print_r('Client:'.$result.'|'); を取得して

Client:锘縖{"odd":"560860393435"}]|

明らかに BOM ヘッダーがあります

したがって、これが必要です print_r(json_decode(substr($result, 3), true));

Get

Array
(
[0] => 560860393435
)

)
できますかサーバーの order_kb() 関数でフィルターしますか?

プログラム ファイルを
utf-8 no bom
形式で保存します


プログラム ファイルを

utf-8 no bom 形式で保存します

メモ帳でファイルを確認しましたが、すべて UTF-8 形式です メモ帳を使用して PHP ファイルを編集している場合は、保存時に ANSI を選択してください

通常、プログラムには中国語の文字列定数がないため、utf-8 を選択しなくても大丈夫です

たぶん誰かが ob_clean() を追加すると言うでしょう。 ; しかし、この反人間的なアプローチは本当にお勧めできません

php ファイルの編集にメモ帳を使用している場合は、保存するときに ANSI を選択してください

通常、プログラムには文字列定数に中国語が含まれていないため、utf-8 を選択しないことは危険です大丈夫です。
ob_clean(); を追加するように言われるかもしれません
この反人間的なアプローチは実際にはお勧めできません
ファイルのエンコーディングが UTF-8 であることを確認するには Dreamware を使用します。 php の ajaxReturn はデフォルトで BOM ヘッダーを追加しますか? 自動的に追加されないようにする方法

BOM ヘッダーは、ドキュメントの文字セットを示すためにエディターによって追加されます (オペレーティング システムのデフォルトの文字セットは GBK であるため)



BOM ヘッダーは、ドキュメントの文字セットを示すためにエディターによって追加されます (オペレーティング システムのデフォルトの文字セットは GBK であるため)。 ajaxReturn 以外に値を返す方法はありますか?他の人は、BOM ヘッダーを処理せずに json_decode を使用してインターフェイス値を取得できると思います

彼らのプログラム ファイルには BOM ヘッダーがないため、当然、それを処理する必要はありません。

そして、ジュニアエディターを使用して php ファイルを編集し、utf-8 エンコーディングを使用したい場合は、当然のことながら、BOM ヘッダーを自分で処理する必要があります


他の人のプログラム ファイルには BOM ヘッダーがないので、当然のことながら、対処する必要はありません!

そして、ジュニアエディターを使用して php ファイルを編集し、utf-8 エンコーディングを使用することを主張したい場合、当然のことながら、BOM ヘッダーを自分で処理する必要があります

php エディターを使用して新しいファイルを作成し、内容は?

人 プログラム ファイルには BOM ヘッダーがないため、処理する必要はありません。

そして、ジュニアエディターを使用して php ファイルを編集し、utf-8 エンコードを使用することに固執する場合は、当然のことながら、BOM ヘッダーを自分で処理する必要があります

BOM ヘッダーが含まれていない場合は機能しません

彼らのプログラム ファイルには BOM ヘッダーがないので、当然、それを処理する必要はありません。
ジュニアエディターを使用して php ファイルを編集し、utf-8 エンコーディングを使用したい場合は、当然、BOM ヘッダーを自分で処理する必要があります


ob_end_clean() を追加するだけです ;
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート