ホームページ >バックエンド開発 >PHPチュートリアル >JSON関連の問題
ヘルプ JSON の問題
はこんな感じです。 js 側では二次元配列のデータを返しますが、
が文字化けしてしまいます。
出力 HTML が間違っていて、データをループアウトできませんか? ?
専門家のアドバイスをお願いします。
js:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> html='<table>'; var i,size,result; url='stock.php'; $.post(url, function(data){ result = eval('(' + data + ')'); size = result.length; for (i = 1; i < size; i++) { html += "<tr><td>" + result[i][1] + "</td><td>" + result[i][2]+ "</td><td>" + result[i][3] + "</td></tr>"; } }); html+='</table>'; alert(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%\"[^>]*>(.*)<\/table>/isU', $content,$str); preg_match_all('/<tr>(.*)<\/tr>/isU', $str[0],$strs); foreach ($strs[0] as $value){ //$pingyings = str_replace('__', '', $pingying); preg_match_all('/(<td[^>]*>|<th[^>]*>)(.*)(<\/td>|<\/th>|<\/div>)/isU', $value,$strs); $zhishu[] = $strs[2]; } for($i=1,$size=count($zhishu); $i<$size; $i++){ $zhishu[$i][0] = str_replace('<div>', '', $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); }
<?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> </td>