http://top.baidu.com/buzz?b=26&c=1&fr=topcategory_c1 など
メインの ??? は統合されました?? の前に追加してください何が欲しいですか?
<?phpfunction getContent($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); $content = iconv('GB2312','UTF8',$response); return $content;}function getKeywords($content){ // keywords preg_match_all('/<td class="keyword">(.*?)<\/td>/is', $content, $keywords); $data = $keywords[1]; $result = array(); foreach($data as $val){ preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp); array_push($result, array('name'=>$tmp[2][0],'url'=>'http://top.baidu.com'.substr($tmp[1][0],1))); } return $result;}function getTc($content){ // tc preg_match_all('/<td class="tc">(.*?)<\/td>/is', $content, $tc); $data = $tc[1]; $result = array(); foreach($data as $val){ preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp); array_push($result, array('brief'=>$tmp[1][0], 'news'=>$tmp[1][1], 'tieba'=>$tmp[1][2])); } return $result;}function getNum($content){ // last preg_match_all('/<td class="last">(.*?)<\/td>/is', $content, $last); //icon-rise up icon-fall down $data = $last[1]; $result = array(); foreach($data as $val){ preg_match_all('/<span.*?class="(.*?)">(.*?)<\/span>/is', $val, $tmp); array_push($result, array('flag'=>str_replace('icon-','',$tmp[1][0]), 'num'=>$tmp[2][0])); } return $result;}$url = 'http://top.baidu.com/buzz?b=26&c=1&fr=topcategory_c1';$content = getContent($url);$result = array();$keywords = getKeywords($content);$tc = getTc($content);$num = getNum($content);for($i=0,$len=count($keywords); $i<$len; $i++){ $tmp = array( 'name' => $keywords[$i]['name'], 'url' => $keywords[$i]['url'], 'brief' => $tc[$i]['brief'], 'news' => $tc[$i]['news'], 'tieba' => $tc[$i]['tieba'], 'flag' => $num[$i]['flag'], 'num' => $num[$i]['num'] ); array_push($result, $tmp);}echo '<pre class="brush:php;toolbar:false">';print_r($result);echo '';?>
組み立てられた形式は次のとおりです:
Array( [0] => Array ( [name] => 匆匆那年 [url] => http://top.baidu.com/detail?b=26&c=1&w=%B4%D2%B4%D2%C4%C7%C4%EA [brief] => http://baike.baidu.com/search/word?word=%B4%D2%B4%D2%C4%C7%C4%EA [news] => http://news.baidu.com/ns?tn=news&from=news&cl=2&rn=20&ct=1&word=%B4%D2%B4%D2%C4%C7%C4%EA [tieba] => http://tieba.baidu.com/f?kw=%B4%D2%B4%D2%C4%C7%C4%EA [flag] => rise [num] => 162540 ) [1] => Array ( [name] => 一个人的武林 [url] => http://top.baidu.com/detail?b=26&c=1&w=%D2%BB%B8%F6%C8%CB%B5%C4%CE%E4%C1%D6 [brief] => http://baike.baidu.com/search/word?word=%D2%BB%B8%F6%C8%CB%B5%C4%CE%E4%C1%D6 [news] => http://news.baidu.com/ns?tn=news&from=news&cl=2&rn=20&ct=1&word=%D2%BB%B8%F6%C8%CB%B5%C4%CE%E4%C1%D6 [tieba] => http://tieba.baidu.com/f?kw=%D2%BB%B8%F6%C8%CB%B5%C4%CE%E4%C1%D6 [flag] => rise [num] => 75428 ) [2] => Array ( [name] => 星际穿越 [url] => http://top.baidu.com/detail?b=26&c=1&w=%D0%C7%BC%CA%B4%A9%D4%BD [brief] => http://baike.baidu.com/search/word?word=%D0%C7%BC%CA%B4%A9%D4%BD [news] => http://news.baidu.com/ns?tn=news&from=news&cl=2&rn=20&ct=1&word=%D0%C7%BC%CA%B4%A9%D4%BD [tieba] => http://tieba.baidu.com/f?kw=%D0%C7%BC%CA%B4%A9%D4%BD [flag] => rise [num] => 70538 ) [3] => Array ( [name] => 心花路放 [url] => http://top.baidu.com/detail?b=26&c=1&w=%D0%C4%BB%A8%C2%B7%B7%C5 [brief] => http://baike.baidu.com/search/word?word=%D0%C4%BB%A8%C2%B7%B7%C5 [news] => http://news.baidu.com/ns?tn=news&from=news&cl=2&rn=20&ct=1&word=%D0%C4%BB%A8%C2%B7%B7%C5 [tieba] => http://tieba.baidu.com/f?kw=%D0%C4%BB%A8%C2%B7%B7%C5 [flag] => fall [num] => 68233 ) 。。。)
function getContent 次のコードを変更します。
function getContent($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, 300); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); $content = iconv('GB2312','UTF8//IGNORE',$response); return $content;}
主要なコンポーネントは統合されており、必要なものを追加できます。
<?phpfunction getContent($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); $content = iconv('GB2312','UTF8',$response); return $content;}function getKeywords($content){ // keywords preg_match_all('/<td class="keyword">(.*?)<\/td>/is', $content, $keywords); $data = $keywords[1]; $result = array(); foreach($data as $val){ preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp); array_push($result, array('name'=>$tmp[2][0],'url'=>'http://top.baidu.com'.substr($tmp[1][0],1))); } return $result;}function getTc($content){ // tc preg_match_all('/<td class="tc">(.*?)<\/td>/is', $content, $tc); $data = $tc[1]; $result = array(); foreach($data as $val){ preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp); array_push($result, array('brief'=>$tmp[1][0], 'news'=>$tmp[1][1], 'tieba'=>$tmp[1][2])); } return $result;}function getNum($content){ // last preg_match_all('/<td class="last">(.*?)<\/td>/is', $content, $last); //icon-rise up icon-fall down $data = $last[1]; $result = array(); foreach($data as $val){ preg_match_all('/<span.*?class="(.*?)">(.*?)<\/span>/is', $val, $tmp); array_push($result, array('flag'=>str_replace('icon-','',$tmp[1][0]), 'num'=>$tmp[2][0])); } return $result;}$url = 'http://top.baidu.com/buzz?b=26&c=1&fr=topcategory_c1';$content = getContent($url);$result = array();$keywords = getKeywords($content);$tc = getTc($content);$num = getNum($content);for($i=0,$len=count($keywords); $i<$len; $i++){ $tmp = array( 'name' => $keywords[$i]['name'], 'url' => $keywords[$i]['url'], 'brief' => $tc[$i]['brief'], 'news' => $tc[$i]['news'], 'tieba' => $tc[$i]['tieba'], 'flag' => $num[$i]['flag'], 'num' => $num[$i]['num'] ); array_push($result, $tmp);}echo '<pre class="brush:php;toolbar:false">';print_r($result);echo '';?>
php ファイルは utf8 ですか
はい
次に、getContent を返します。何が表示されますか? ?
ini_set('display_errors','on');
error_reporting(E_ALL); を追加して、何が起こるかを確認してください。 getContent を変更しても大丈夫ですか?
エンコードを ANSI に変更しても
テストに使用できるファイルはパッケージ化できますか?
以上です
質問は、私は初心者ですが、この配列を取り出して通常に使用するにはどうすればよいですか?
$content = iconv('GBK','UTF-8//IGNORE', $response );
$content = iconv('GB2312','UTF8//IGNORE',$response)
$content = iconv('GBK','UTF8//IGNORE',$応答);
??
使い方がわかりません。 。 。ふふ。
表示されるコードをどのようにしたいですか? それを HTML にして、必要な場所にテキストを挿入します。
たまたま配列が違っていたので落ち込んでしまいました
実際、こうすればいいだけです
うわー
完全なサンプルをダウンロードしてください。 何を変更したいですか?
リーリー