0

共通のハッシュタグを使用して、特定のユーザーのTwitterフィードを表示するプログラムを作成しています。プログラムは、フォームへのユーザー入力からユーザー名の配列とハッシュタグを取得します。正規表現(あまり得意ではないもの)を使用して、ハッシュタグを含むツイートを削除し、それをエコーアウトしたいと思います。ただし、プログラムは現在機能していません。これが私の仕事です:

    <?php
        $hash = $_GET['hash'];
        $users = $_GET['users'];
        $users = str_replace(" ", "", $users);
        $hash = str_replace(" ", "", $hash);
        $users = explode(",",$users);
        $regex = "/^[#]+[a-zA-Z0-9_]+[ ]$/";
        $url = 'http://search.twitter.com/search.json?q='.$user.'&lang=en&rpp=100';

        foreach($users as $user){
        $jsontwitter = file_get_contents($url);
        $twitter = json_decode($jsontwitter, true);
        $twittertext = $twitter["results"];

        if(preg_match($regex, $twittertext['text'])){
        foreach($twittertext as $text){
        echo '<a href="http://twitter.com/'.$text['from_user'].'">@'.$text['from_user'].'</a>: '.$text['text'].'<br>';
            }
          }
        }
    ?>

助言がありますか?

4

2 に答える 2

0

最初にタイプミスを修正する必要があります。8行目の変数が上で定義されていないため、q=変数は空です。3行目で定義されているように、そこで「$ users」を使用したかったようです。2行目と3行目に静的変数を設定してコマンドラインからテストします(以下を参照)。点。

$ php test.html
警告:file_get_contents(http://search.twitter.com/search.json?q3%lang=en&rpp=100):ストリームを開くことができませんでした:HTTPリクエストが失敗しました!HTTP /1.0403禁止

于 2012-12-16T20:15:22.933 に答える
0

友人の助けを借りて、それを理解しました。定義された $user 変数で検索を実行するには、$url 変数が for ループ内にある必要がありました。そこから、json が返されてデコードされ、その結果が別の for ループを介して実行され、if ステートメントで正規表現を使用して、指定されたハッシュタグを含む個々のツイートが分離されます。その後、つぶやきがエコーアウトされます。さらに、正規表現の処理方法が正しくありませんでした。# で始まり、任意の文字を含み、スペースで終わる文字列を探していました。# がどこかにあり、その後に $hash 変数が続き、その後にスペースが続く文字列を探す必要があります。

結果の作業スクリプト:

<?php
$hash = $_GET['hash'];
$users = $_GET['users'];

$users = str_replace(" ", "", $users);
$hash = str_replace(" ", "", $hash);
$users = explode(",",$users);

$regex = "/($i)#". $hash ."/";


foreach($users as $user){

    $url = 'http://search.twitter.com/search.json?q='.$user.'&lang=en&rpp=100';
    $jsontwitter = file_get_contents($url);
    $twitter = json_decode($jsontwitter, true);
    $twittertext = $twitter["results"];

    foreach($twittertext as $text){
        if(preg_match($regex, $text['text'])){
            echo '<a href="http://twitter.com/'.$text['from_user'].'">@'.$text['from_user'].'</a>: '.$text['text'].'<br>';

        }
    }
}       

?>
于 2012-12-17T04:33:28.017 に答える