ホームページ > バックエンド開発 > PHPチュートリアル > PHPのBaiduキーワードランキングクエリ関数、2ページ目のサイトは戻り値なし

PHPのBaiduキーワードランキングクエリ関数、2ページ目のサイトは戻り値なし

WBOY
リリース: 2016-06-23 14:09:23
オリジナル
1532 人が閲覧しました

最初のページのキーワードはすべて正常な結果を返しますが、2 番目のページの値は受信されません。コードは次のとおりです。


ディスカッションに返信します。 (解決策)

この問題は複雑ですか?

返されたデータの意味がわかりません

2 ページ目が何であるべきかわかりません

2 ページ目の操作例がありません

意味がわかりません返されたデータの例

2 ページ目がどうあるべきかわかりません

あなた 2 ページ目の操作例はありません

ここで見ることができます、http://hi.baidu.com/alexkh/ item/023a90dd18ca59c51a72b415
この関数は私が提案したばかりです

<?phpfunction search($keyword, $url, $page = 1){	$px = 0;	$rsState = false;		$enKeyword = urlencode($keyword);	$firstRow = ($page - 1) * 10;		if ($page > 2)	{		return array(0,0,0);	}		try{		$contents = file_get_contents("http://www.baidu.com/s?wd=$enKeyword&pn=$firstRow");	}catch (Exception $e){		echo '超时';		die();	}		preg_match_all('/<table[^>]*?class="result"[^>]*>[\s\S]*?<\/table>/i', $contents, $rs);	foreach ($rs[0] as $k => $v)	{		$px++;		$v = str_replace(array( 			'<b>', 			'</b>' 		), '', $v);//去除英文关键字的加粗标签		if (strstr($v, $url))		{			$rsState = true;			$arr_rank=array($px,$page,++$k);			//print_r($arr_rank);			return array($px,$page,++$k);//$px排名,$page为所在页数,++$k为关键词所在页数的具体位置		}	}	unset($contents);	if ($rsState === false)	{		search($keyword, $url, ++$page);	}}?><?$keyword1="百度优化";$site1="ppc.admin5.com";$keyword2="青岛酒店预订";$site2="www.hotel0512.com";$keyword3="青岛酒店预订";$site3="www.17u.com";$arr_paiming1=search($keyword1, $site1);print_r($arr_paiming1);echo '<br>';$arr_paiming2=search($keyword2, $site2);print_r($arr_paiming2);echo '<br>';$arr_paiming3=search($keyword3, $site3);print_r($arr_paiming3);echo '<br>';?>
ログイン後にコピー


実は、奇妙なのはこれです、print_r() のときはまだ値がありますが、戻るときは空です

誰かが見てください

再帰があるのに、再帰データを返さないのはなぜですか?

if ($rsState === false)
{
search($keyword, $url, ++$page);
}
少なくともそれは
if ($rsState === false)
{
return search( $keyword, $url, ++$page);
}

結果は次のようになりますか? (受信パラメータは検索入口に出力されます)
Baidu Optimization, ppc.admin5.com, 1
Array
(
[0] => 6
[1] => 1
[2] => 7
)
青島のホテル予約、www.hotel0512.com、1
青島のホテル予約、www.hotel0512.com、2
配列
(
[0] = & gt; 4
[1] = & gt; 2
[ 2] = > 5
)
青島ホテル予約、www.17u.com、1
配列
(
[0] => 2
[1] => 1
[2] => 3
)

ありがとうございます。アルゴリズムがまだ理解できていないようです


再帰があるのに、再帰データを返さないのはなぜですか?
if ($rsState === false)
{
search($keyword, $url, ++$page);
}
少なくともそれは
if ($rsState === false)
{
return search( $keyword, $url, ++$page);
}

結果は次のようになりますか? (受信パラメータは検索入口に出力されます)
Baidu Optimization, ppc.admin5.com, 1
Array
(
[0] => 6
[1] => 1
[2] => 7
)
青島のホテル予約、www.hotel0512.com、1
青島のホテル予約、www.hotel0512.com、2
配列
(
[0] = & gt; 4
[1] = & gt; 2
[ 2] = > 5
)
青島ホテル予約、www.17u.com、1
配列
(
[0] => 2
[1] => 1
[2] => 3
)

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