ホームページ > バックエンド開発 > PHPチュートリアル > Baidu ランキングから 50 個の項目を抽出し、各項目に接頭辞と接尾辞を追加するにはどうすればよいですか?

Baidu ランキングから 50 個の項目を抽出し、各項目に接頭辞と接尾辞を追加するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 13:43:53
オリジナル
1068 人が閲覧しました

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 を返します。何が表示されますか? ?
さて、?? をオンにします。画面が白い場合は、?? であると推定されます。 curl をインストールしましたか?

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 にして、必要な場所にテキストを挿入します。

たまたま配列が違っていたので落ち込んでしまいました

実際、こうすればいいだけです

うわー

完全なサンプルをダウンロードしてください。

何を変更したいですか?

リーリー

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