0

シンプルな検索バーがあり、ユーザーが検索語を入力すると、検索語に一致するツイートが表示されます。ただし、単一の単語検索でのみ機能します。

<div id="search">
<form action="" method="get">
  <label>
  Search:
  <input type="text" name="search_box" id="search_box" />
  <input type="submit" name="submit" id="submit" value="Search" />
  </label>
</form>
</div>

<?php 


$q=$_GET['search_box'];

$search = "http://search.twitter.com/search.atom?q=".$q."";

$tw = curl_init();

curl_setopt($tw, CURLOPT_URL, $search);
curl_setopt($tw, CURLOPT_RETURNTRANSFER, TRUE);
$twi = curl_exec($tw);
$search_res = new SimpleXMLElement($twi);

echo "<h3>Twitter search results for '".$q."'</h3>";

foreach ($search_res->entry as $twit1) {

$description = $twit1->content;

$message = $row['content'];

echo "<div class='text'>".$description."</div><br><br>";

}

curl_close($tw);

?>
4

3 に答える 3

2

完全に一致するフレーズを引用符で検索する場合は、クエリ文字列を作成する前にこれらの引用符をエスケープする必要があります。現在のコードでは:

$q = $_GET['q']
$search = "http://search.twitter.com/search.atom?q=".$q."";

入力「テスト フレーズ」は次の式になります (おそらく解析エラーが発生します)。

"http://search.twitter.com/search.atom?q="test phrase"";

代わりに、検索文字列に含める前に、ユーザー入力を urlencode してみてください。

$q = urlencode($_GET['q']);
$search = "http://search.twitter.com/search.atom?q={$q}";

値は次のようになります。

http://search.twitter.com/search.atom?q=%22test%20phrase%22

ブラウザに URL を入力して、これが機能することを確認できます。

于 2012-04-28T15:41:41.483 に答える
0
$q = $_GET['search_box']." is";
$search = "http://search.twitter.com/search.atom?q=%22".urlencode( $q )."%22";
于 2012-04-28T19:26:29.337 に答える
0

編集:

Twitter Search API の最適なリソースは次のとおりです: https://dev.twitter.com/docs/using-search

正確なフレーズを一致させるには、クエリ文字列をクォートで囲むだけです。

--

Twitter API では、フレーズはすべて論理 AND ですが、カンマ区切りの値は論理 OR です。

「コンマで区切られたキーワードとフレーズは論理 OR であり、フレーズは論理 AND です。フレーズ内の単語はスペースで区切られます。いずれかのフレーズが一致する場合、ツイートが一致します。ツイートにすべての単語が存在する場合、フレーズが一致します。(たとえば、twitter はAND twitter、the,twitter は OR twitter.) 用語は完全一致であり、句読点を無視しても完全一致です。

これは実際にはストリーミング API によるものですが、検索 API にも適用されると思います (間違っていたら誰か訂正してください!)。

些細な例でこれが何を意味するか考えてみましょう:

Tweet: "This is a tweet about grapefruit"

クエリと一致します:

  • つぶやき
  • グレープフルーツ
  • グレープフルーツ

しかし、そうではありません:

  • パイナップル
  • グレープフルーツ パイナップル

「パイナップル」または「グレープフルーツ」のいずれかが含まれるツイートを検索する場合、クエリ パラメータは次のようにする必要があります。

「グレープフルーツ、パイナップル」。

于 2012-04-28T01:31:22.997 に答える