0

私は webcrawler プログラムを作成しており、以前の URL (最後にアクセスしたサイト) と現在の URL (現在または次にアクセスするサイト) を比較しようとしています。これを行うには、次のstrcmpような関数を使用しています。

array_push($currentsite, $source);
  if (strcmp($currentsite[2], $currentsite[3])==0){
    echo "redundancy";
    crawlWebsite($originalsource);  
    }

現在のサイトは、以前のサイトと現在のサイトの配列です。大規模なプログラムで再帰を使用して、毎回新しいサイトをループしています。

strcmpただし、現在のサイトと新しいサイトでa を実行するたびに、URL が同じであっても、-1 の結果が得られます。これが一貫して起こっている理由を誰かが知っていますか?

ありがとう。

4

2 に答える 2

1

URLが同じでも、

2 つの入力文字列が同一の場合、strcmp は 0 を返すため、入力文字列は同一ではありません。$currentsite の内容を確認してください。

ところでstrcmp($a, $b) == 0、効率的に次のように書き換えることができます$a == $b

于 2011-08-28T15:05:12.623 に答える
0

おそらく、テストしているサイトには、現在の時刻やセッションを保存するための非表示の ID など、サイトを一意にする何かが含まれています。

いずれにせよ、それは 0 を返さないという結果になりstrcmpます。2 つのサイトを同一と見なすレベルを定義できるように、同等のパーセンテージを提供する関数を用意することをお勧めします。

于 2011-08-28T15:14:14.247 に答える