ウェブページのコードは GB2312 (「より重要なので注意してください」)、コードは次のとおりです
<?phpprint_r(getKwToData('玻璃移门'));//当这里关键词为"玻璃移门"时,就无法解析json,但生成的url直接通过浏览器访问就有数据,如果关键词为"手机",就可以正常解析jsonfunction getKwToData($kw,$page=1,$condition=''){ if(empty($kw)){ return false; } if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$kw) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$kw) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$kw) != true) { $kw=iconv('gbk','utf-8',$kw); } $randIp='110.75.71.20'; $url="http://".$randIp."/search_turn_page_iphone.htm?sort=".$condition."&q=".urlencode($kw)."&page=".$page."&showMode=list"; $url=iconv('gbk','utf-8',$url);//生成的url $data=file_get_contents($url);//这里不管什么关键词都可以获取网页数据 $listItem=json_decode($data);//当这里关键词为"玻璃移门"时,就无法解析json,但生成的url直接通过浏览器访问就有数据,如果关键词为"手机",就可以正常解析json return $listItem->listItem;}function getLocalIp(){//获得用户ip if(isset($_SERVER['HTTP_CLIENT_IP'])){ $ip=$_SERVER['HTTP_CLIENT_IP']; }elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }else{ $ip=$_SERVER['REMOTE_ADDR']; } return $ip;}?>
キーワードが「ガラス引き戸」の場合、echo $data の値は何ですか
キーワードが「ガラス引き戸」の場合、何をecho $data の値です
echo のコードは次のとおりです。コードが多すぎて一部しか投稿できません。listItem ノードの形式が手動でインターセプトされているため、形式が間違っている可能性があります。または、直接アクセスすることもできます (http://110.75.71.20/search_turn_page_iphone.htm?sort=&q=%E7%8E%BB%E7 %92%83%E7%A7%BB%E9%97%A8&page=1&showMode=) list)、注: 私の php ファイルのエンコーディングは gb2312 です。通常に表示するには、echo からのデータをブラウザで utf-8 を選択する必要があります。そうでない場合は、コードが文字化けします
{"result":"true","totalPage":"100","catmap":"","ppath":"","category":"移门","auctionTagFlag1":"","auctionTagFlag2":"","auctionTagFlag3":"","listItem":[ {"name":"特价吊门。阳台厨房客厅餐厅隔断推拉门,钛合金材质玻璃隔断移门" ,"img":"http://q.i03.wimg.taobao.com/bao/uploaded/i1/10777020696035707/T12ggQXXBXXXXXXXXX_!!0-item_pic.jpg_90x90.jpg","img2":"http://q.i03.wimg.taobao.com/bao/uploaded/i1/10777020696035707/T12ggQXXBXXXXXXXXX_!!0-item_pic.jpg","iswebp":"","url":"http://a.m.taobao.com/i12812086428.htm?rn=54mFXh1-tGoPo1JS2xg7rHCf0C-90rXM9O-Y7hC&sid=aa444833fda20421","previewUrl":"http://a.m.taobao.com/ajax/pre_view.do?itemId=12812086428&sid=aa444833fda20421","favoriteUrl":"http://fav.m.taobao.com/favorite/to_collection.htm?itemNumId=12812086428&sid=aa444833fda20421", "icon":["0" ], "price":"320.00","originalPrice":"320.00","freight":"0","area":"上海","act":"月售12","itemNumId":"12812086428","nick":"特价移门淋浴房阳台", "wwimUrl":"http://im.m.taobao.com/ww/ad_ww_dialog.htm?item_num_id=12812086428&to_user=zNi829LGw8XB3NSht7%2FR9Myo","category":"50022360","isMobileEcard":"false","auctionType":"b" } , {"name":"卫生间隔断门 阳台玻璃推拉门/拼格门 钢化玻璃移门 新店特惠" ,"img":"http://q.i04.wimg.taobao.com/bao/uploaded/i4/11427033313416399/T1aPluXCdcXXXXXXXX_!!0-item_pic.jpg_90x90.jpg","img2":"http://q.i04.wimg.taobao.com/bao/uploaded/i4/11427033313416399/T1aPluXCdcXXXXXXXX_!!0-item_pic.jpg","iswebp":"","url":"http://a.m.taobao.com/i17422447064.htm?rn=54mFXh1-tGoPo1JS2xg7rHCf0C-90rXM9O-Y7hC&sid=aa444833fda20421","previewUrl":"http://a.m.taobao.com/ajax/pre_view.do?itemId=17422447064&sid=aa444833fda20421","favoriteUrl":"http://fav.m.taobao.com/favorite/to_collection.htm?itemNumId=17422447064&sid=aa444833fda20421", "icon":["0" ], "price":"218.02","originalPrice":"298.00","freight":"10","area":"郑州","act":"月售10","itemNumId":"17422447064","nick":"逸品尚家居", "wwimUrl":"http://im.m.taobao.com/ww/ad_ww_dialog.htm?item_num_id=17422447064&to_user=0t3Gt8nQvNK%2B0w%3D%3D","category":"50022360","isMobileEcard":"false","auctionType":"b" } }
json_decode の前に $data を次のように置き換えることができます
$data = str_replace('\', '\\', $data);
なぜこれが行われるのかわからない場合は、$data が出力した内容を以下の URL に入力して確認してください
JSON を簡単に作成する
$s = file_get_contents('http://110.75.71.20/search_turn_page_iphone.htm?sort=&q=%E7%8E%BB%E7%92%83%E7%A7%BB%E9%97%A8&page=1&showMode=list');$s = stripslashes($s);//去掉可能存在的转义$t = json_decode($s, true);//解码成数组array_walk_recursive($t, 'togbk');//因为你需要的是 gbk 编码的,所以要转一下码print_r($t);function togbk(&$item, $key) { $item = iconv('utf-8', 'gbk', $item);}Array
tripslashes($abc);//エスケープの可能性を削除します