Jump to content

php hashtags


Recommended Posts


So i got this pulling twitter data raw i cant for the life of me figure out how to explode items $text(tweet body

and seperate the hashtags and enter them into a database (database hase 3 fields for hashtags)

<?php
/** database cred **/
        define('DBHOST','localhost');
        define('DBUSERNAME','***');
        define('DBPASSWORD','**');
        define('DBNAME','roguebro_tweet');
        define('TWEETTABLE','twitter');
/** end database cred **/
        

        /** Set access tokens here - see: https://dev.twitter.com/apps/ **/
        require_once('TwitterAPIExchange.php');
        $settings = array(
        'oauth_access_token' => "831981818408677377-FexWOmvCyaZYWt3TYwmodmx3gMmFIqx",
        'oauth_access_token_secret' => "L1vwbaBjsUivKn5NYVmGgve6V1lSP5THvjBk3LiadHyOj",
        'consumer_key' => "t31OianjtopHhDEdeBAjWPqj3",
        'consumer_secret' => "zFZpwrMl31BShY6CluYapaZl0K1CQPpsagBjVCMkTs2GtWHhRm"
        );
        
        /** end Twitter Credentials **/
        $url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
        $requestMethod = "GET";
        $getfield = '?screen_name=MCoCTrucos&entities=on&count=20 -rt';
        $twitter = new TwitterAPIExchange($settings);
        $string = json_decode($twitter->setGetfield($getfield)
        ->buildOauth($url, $requestMethod)
        ->performRequest(),$assoc = TRUE);
        if($string["errors"][0]["message"] != "") {echo "<h3>Sorry, there was a             problem.</h3><p>Twitter returned the following error message:</p><p>     <em>".$string[errors][0]["message"]."</em></p>";exit();}
        foreach($string as $items)
        {
            echo "Tweeted by: ". $items['user']['name']."<br />";       
            echo "Screen name: ". $items['user']['screen_name']."<br />";
            echo "Tweet: ". $items['text']."<br />";                
            echo "Time and Date of Tweet: ".$items['created_at']."<br />";
            echo "Tweet ID: ".$items['id_str']."<br />";
            echo "Followers: ". $items['user']['followers_count']."<br /><hr />";
            echo insertTweets($items['user']['name'],$items['user']['screen_name'],$items['text'],$items['created_at'],$items['id_str'],$items['user']['followers_count']);
      
$tags = $items['text']; 

$hashtags = explode("#", $tags);


 
 

        }

        function insertTweets($name,$screen_name,$text,$created_at,$id_str,$followers_count){
            $mysqli = new mysqli(DBHOST, DBUSERNAME, DBPASSWORD, DBNAME);
            if ($mysqli->connect_errno) {
                return 'Failed to connect to Database: (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error; 
            }
            $prepareStmt='INSERT INTO '.DBNAME.'.'.TWEETTABLE.' (name, screen_name, text, created_at, id_str, followers_count) VALUES (?,?,?,?,?,?);';
            if ($insert_stmt = $mysqli->prepare($prepareStmt)){
                $insert_stmt->bind_param('ssssid', $name,$screen_name,$text,$created_at,$id_str,$followers_count);
                if (!$insert_stmt->execute()) {
                    $insert_stmt->close();
                    return 'Tweet Creation cannot be done at this moment.';
                }elseif($insert_stmt->affected_rows>0){
                    $insert_stmt->close();
                    return 'Tweet Added.<br><br>';
                }else{
                    $insert_stmt->close();
                    return 'No Tweet were Added.';
                }
            }else{
                return 'Prepare failed: (' . $mysqli->errno . ') ' . $mysqli->error;
            }
        }              ?>
Link to post
Share on other sites


echo insertTweets($items['user']['name'],$items['user']['screen_name'],$items['text'],$items['created_at'],$items['id_str'],$items['user'] ['followers_count'],$hash);

/** FInd hashtags build array **/
preg_match_all("/#(\\w+)/",$items['text'],$hashtags); //now $tags is an array of hashtags


/** FInd hashtags build array **/
var_dump( $hashtags);


}

/** Insert to database **/
function insertTweets($name,$screen_name,$text,$created_at,$id_str,$followers_count,$hash){
$mysqli = new mysqli(DBHOST, DBUSERNAME, DBPASSWORD, DBNAME);
if ($mysqli->connect_errno) {
return 'Failed to connect to Database: (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error;
}
$prepareStmt='INSERT INTO '.DBNAME.'.'.TWEETTABLE.' (name, screen_name, text, created_at, id_str, followers_count, hashtags) VALUES (?,?,?,?,?,?,?)';
if ($insert_stmt = $mysqli->prepare($prepareStmt)){
$insert_stmt->bind_param('sssssid', $name,$screen_name,$text,$created_at,$id_str,$followers_count,$hash);
if (!$insert_stmt->execute()) {
$insert_stmt->close();
return 'Tweet Creation cannot be done at this moment.';
}elseif($insert_stmt->affected_rows>0){
$insert_stmt->close();
return 'Tweet Added.<br>';
}else{
$insert_stmt->close();
return 'No Tweet were Added.';
}
}else{
return 'Prepare failed: (' . $mysqli->errno . ') ' . $mysqli->error;
}
}

 

Link to post
Share on other sites

so i have the array now but cant do anything database wise.

 

i have 4 hashtag fields and a link one  the system i need to use matches 

array(4) { [0]=> string(19) "#ContestOfChampions" [1]=> string(7) "#Cutoff" [2]=> string(9) "#Dormammu" [3]=> string(11) "#JaneFoster" }

is a sample array

 i would love it if i could somehow insert each field into its own mysql column to make my next steps easier

Link to post
Share on other sites
This thread is more than a year old.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.