ホームページ >バックエンド開発 >PHPチュートリアル >JSON関連の問題
ヘルプ JSON の問題
はこんな感じです。 js 側では二次元配列のデータを返しますが、
が文字化けしてしまいます。
出力 HTML が間違っていて、データをループアウトできませんか? ?
専門家のアドバイスをお願いします。
js:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> html='
" + result[i][1] + " | " + result[i][2]+ " | " + result[i][3] + " | "; } }); html+='
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php $url = 'http://data.stock.hexun.com/quotes/stock_4.htm'; $content = @file_get_contents($url); preg_match('/<table width=\"100%\"[^>]*>(.*)/isU', $content,$str); preg_match_all('/<tr>(.*)/isU', $str[0],$strs); foreach ($strs[0] as $value){ //$pingyings = str_replace('__', '', $pingying); preg_match_all('/(<td>]*>|</td> <th>]*>)(.*)(||)/isU', $value,$strs); $zhishu[] = $strs[2]; } for($i=1,$size=count($zhishu); $i', '', $zhishu[$i][0]); //$zhishu[$i][0] = iconv('gbk', 'utf-8', $zhishu[$i][0]); } die(JSON($zhishu)); function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } } function JSON($array) { arrayRecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json); } <br><br><br><font color="#e78608">-----解決策---------------------------- -</font><br>js に戻るのは次のような文字列です <br><br>[["株式市場名", "最新", "増加/減少%"],["ダウ ジョーンズ","13194.10 ","+0.12%"],["ナスダック","3040.73","+0.03%"],["S&P 500","1394.28","-0.12%"],["フランスCAC40","3564.51 ","+0.40%" ],["日経225","10123.06","+0.72%"],["英国FTSE","5945.43","-0.18%"],["オーストラリア全株", "4366.90"," -0.20%"]]<br><br>その形式は JavaScript Object Notation (JSON) の規則に準拠していないため、eval によって 1 次元配列に解析することしかできません (js は多次元配列の概念はありません)<br><br> 次のことについて私が小言を言う必要はありません。 <br><font color="#e78608">------解決策-----------</font><br>#1.php エンコードを指定するリターンヘッダーを追加gb2312 の場合、または直接 gbk<br><dl class="code">PHP コード<pre class="brush:php;toolbar:false"> <?php header("コンテンツタイプ:text/html;charset=gbk"); $url = 'http://data.stock.hexun.com/quotes/stock_4.htm'; ... ... ... ?> <br><font color="#e78608">------解決策----------------------</font><br>データによると、解決策は 1 つだけです-次元配列 <br> ループ エラーは <br> です。 1. 開始点が間違っています。配列の添字は 0 から始まりますが、1 から開始します。 <br> 2. 明らかに 1 次元配列ですが、それを扱います。二次元なので当然です 記事は間違っています<br><br>データは 3 つのグループに分かれています<br>for (i = 0; i <size i></size> html += " <tr> <td>" + result[i] + "</td> <td>" + result[i+1]+ "</td> <td>" + result[i+ 2] + "</td> </tr>";<br>}<br> <br><font color="#e78608">------解決策---------</font><br>php を使用して 2 次元のものを作成するだけです<div class="clear"></div>