Remove username from Twitter feed

Discussion in 'PHP' started by mark7144, Nov 27, 2008.

  1. #1
    I have an RSS feed of a Twitter page on my website but I don't want the username of that Twitter's profile to be mentioned at the start of every message.

    Currently the format is, "<<username>>: Twitter message", I want that simply changed to "Twitter message".

    The code for the RSS is below, it would be greatly appreciated if anyone can think up some code that would eliminate the name from the messages :)

    Home page code
    <?php
    include "./lastRSS.php";
    $rss = new lastRSS;
    
    $rss->cache_dir = './cache';
    $rss->cache_time = 3600;
    $rss->cp = 'UTF-8';
    $rss->date_format = '';
    $rss->items_limit = '2';
    $rss->CDATA = 'nochange';
    
    $rssurl = 'http://twitter.com/statuses/user_timeline/14123683.rss';
    
    if ($rs = $rss->get($rssurl)) { 
                foreach ($rs['items'] as $item) { 
                    echo "$item[title]"; 
    			
    				 echo "<br /><span class=\"smallgrey\">Posted on $item[pubDate]</span><br />";
    				 echo"<div class=\"break\"></div>"; }}
    else {echo "Error: Unable to get feed...";}
    
    ?> 
    
    Code (markup):
    RSS Source
    <?php
    /*
     ======================================================================
     lastRSS 0.9.1
     
     Simple yet powerfull PHP class to parse RSS files.
     
     by Vojtech Semecky, webmaster @ webdot . cz
     
     Latest version, features, manual and examples:
     	http://lastrss.webdot.cz/
    
     ----------------------------------------------------------------------
     LICENSE
    
     This program is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License (GPL)
     as published by the Free Software Foundation; either version 2
     of the License, or (at your option) any later version.
    
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     GNU General Public License for more details.
    
     To read the license please visit http://www.gnu.org/copyleft/gpl.html
     ======================================================================
    */
    
    /**
    * lastRSS
    * Simple yet powerfull PHP class to parse RSS files.
    */
    class lastRSS {
    	// -------------------------------------------------------------------
    	// Public properties
    	// -------------------------------------------------------------------
    	var $default_cp = 'UTF-8';
    	var $CDATA = 'nochange';
    	var $cp = '';
    	var $items_limit = 0;
    	var $stripHTML = False;
    	var $date_format = '';
    
    	// -------------------------------------------------------------------
    	// Private variables
    	// -------------------------------------------------------------------
    	var $channeltags = array ('title', 'link', 'description', 'language', 'copyright', 'managingEditor', 'webMaster', 'lastBuildDate', 'rating', 'docs');
    	var $itemtags = array('title', 'link', 'description', 'author', 'category', 'comments', 'enclosure', 'guid', 'pubDate', 'source');
    	var $imagetags = array('title', 'url', 'link', 'width', 'height');
    	var $textinputtags = array('title', 'description', 'name', 'link');
    
    	// -------------------------------------------------------------------
    	// Parse RSS file and returns associative array.
    	// -------------------------------------------------------------------
    	function Get ($rss_url) {
    		// If CACHE ENABLED
    		if ($this->cache_dir != '') {
    			$cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url);
    			$timedif = @(time() - filemtime($cache_file));
    			if ($timedif < $this->cache_time) {
    				// cached file is fresh enough, return cached array
    				$result = unserialize(join('', file($cache_file)));
    				// set 'cached' to 1 only if cached file is correct
    				if ($result) $result['cached'] = 1;
    			} else {
    				// cached file is too old, create new
    				$result = $this->Parse($rss_url);
    				$serialized = serialize($result);
    				if ($f = @fopen($cache_file, 'w')) {
    					fwrite ($f, $serialized, strlen($serialized));
    					fclose($f);
    				}
    				if ($result) $result['cached'] = 0;
    			}
    		}
    		// If CACHE DISABLED >> load and parse the file directly
    		else {
    			$result = $this->Parse($rss_url);
    			if ($result) $result['cached'] = 0;
    		}
    		// return result
    		return $result;
    	}
    	
    	// -------------------------------------------------------------------
    	// Modification of preg_match(); return trimed field with index 1
    	// from 'classic' preg_match() array output
    	// -------------------------------------------------------------------
    	function my_preg_match ($pattern, $subject) {
    		// start regullar expression
    		preg_match($pattern, $subject, $out);
    
    		// if there is some result... process it and return it
    		if(isset($out[1])) {
    			// Process CDATA (if present)
    			if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag)
    				$out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>''));
    			} elseif ($this->CDATA == 'strip') { // Strip CDATA
    				$out[1] = strtr($out[1], array('<![CDATA['=>'', ']]>'=>''));
    			}
    
    			// If code page is set convert character encoding to required
    			if ($this->cp != '')
    				//$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]);
    				$out[1] = iconv($this->rsscp, $this->cp.'//TRANSLIT', $out[1]);
    			// Return result
    			return trim($out[1]);
    		} else {
    		// if there is NO result, return empty string
    			return '';
    		}
    	}
    
    	// -------------------------------------------------------------------
    	// Replace HTML entities &something; by real characters
    	// -------------------------------------------------------------------
    	function unhtmlentities ($string) {
    		// Get HTML entities table
    		$trans_tbl = get_html_translation_table (HTML_ENTITIES, ENT_QUOTES);
    		// Flip keys<==>values
    		$trans_tbl = array_flip ($trans_tbl);
    		// Add support for &apos; entity (missing in HTML_ENTITIES)
    		$trans_tbl += array('&apos;' => "'");
    		// Replace entities by values
    		return strtr ($string, $trans_tbl);
    	}
    
    	// -------------------------------------------------------------------
    	// Parse() is private method used by Get() to load and parse RSS file.
    	// Don't use Parse() in your scripts - use Get($rss_file) instead.
    	// -------------------------------------------------------------------
    	function Parse ($rss_url) {
    		// Open and load RSS file
    		if ($f = @fopen($rss_url, 'r')) {
    			$rss_content = '';
    			while (!feof($f)) {
    				$rss_content .= fgets($f, 4096);
    			}
    			fclose($f);
    
    			// Parse document encoding
    			$result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content);
    			// if document codepage is specified, use it
    			if ($result['encoding'] != '')
    				{ $this->rsscp = $result['encoding']; } // This is used in my_preg_match()
    			// otherwise use the default codepage
    			else
    				{ $this->rsscp = $this->default_cp; } // This is used in my_preg_match()
    
    			// Parse CHANNEL info
    			preg_match("'<channel.*?>(.*?)</channel>'si", $rss_content, $out_channel);
    			foreach($this->channeltags as $channeltag)
    			{
    				$temp = $this->my_preg_match("'<$channeltag.*?>(.*?)</$channeltag>'si", $out_channel[1]);
    				if ($temp != '') $result[$channeltag] = $temp; // Set only if not empty
    			}
    			// If date_format is specified and lastBuildDate is valid
    			if ($this->date_format != '' && ($timestamp = strtotime($result['lastBuildDate'])) !==-1) {
    						// convert lastBuildDate to specified date format
    						$result['lastBuildDate'] = date($this->date_format, $timestamp);
    			}
    
    			// Parse TEXTINPUT info
    			preg_match("'<textinput(|[^>]*[^/])>(.*?)</textinput>'si", $rss_content, $out_textinfo);
    				// This a little strange regexp means:
    				// Look for tag <textinput> with or without any attributes, but skip truncated version <textinput /> (it's not beggining tag)
    			if (isset($out_textinfo[2])) {
    				foreach($this->textinputtags as $textinputtag) {
    					$temp = $this->my_preg_match("'<$textinputtag.*?>(.*?)</$textinputtag>'si", $out_textinfo[2]);
    					if ($temp != '') $result['textinput_'.$textinputtag] = $temp; // Set only if not empty
    				}
    			}
    			// Parse IMAGE info
    			preg_match("'<image.*?>(.*?)</image>'si", $rss_content, $out_imageinfo);
    			if (isset($out_imageinfo[1])) {
    				foreach($this->imagetags as $imagetag) {
    					$temp = $this->my_preg_match("'<$imagetag.*?>(.*?)</$imagetag>'si", $out_imageinfo[1]);
    					if ($temp != '') $result['image_'.$imagetag] = $temp; // Set only if not empty
    				}
    			}
    			// Parse ITEMS
    			preg_match_all("'<item(| .*?)>(.*?)</item>'si", $rss_content, $items);
    			$rss_items = $items[2];
    			$i = 0;
    			$result['items'] = array(); // create array even if there are no items
    			foreach($rss_items as $rss_item) {
    				// If number of items is lower then limit: Parse one item
    				if ($i < $this->items_limit || $this->items_limit == 0) {
    					foreach($this->itemtags as $itemtag) {
    						$temp = $this->my_preg_match("'<$itemtag.*?>(.*?)</$itemtag>'si", $rss_item);
    						if ($temp != '') $result['items'][$i][$itemtag] = $temp; // Set only if not empty
    					}
    					// Strip HTML tags and other bullshit from DESCRIPTION
    					if ($this->stripHTML && $result['items'][$i]['description'])
    						$result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description'])));
    					// Strip HTML tags and other bullshit from TITLE
    					if ($this->stripHTML && $result['items'][$i]['title'])
    						$result['items'][$i]['title'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['title'])));
    					// If date_format is specified and pubDate is valid
    					if ($this->date_format != '' && ($timestamp = strtotime($result['items'][$i]['pubDate'])) !==-1) {
    						// convert pubDate to specified date format
    						$result['items'][$i]['pubDate'] = date($this->date_format, $timestamp);
    					}
    					// Item counter
    					$i++;
    				}
    			}
    
    			$result['items_count'] = $i;
    			return $result;
    		}
    		else // Error in opening return False
    		{
    			return False;
    		}
    	}
    }
    
    ?>
    Code (markup):
    RSS
     
    mark7144, Nov 27, 2008 IP
  2. Social Media SEO

    Social Media SEO Peon

    Messages:
    1
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Here's how to remove your username from your Twitter RSS feed:

    1) Click this link >> http://pipes.yahoo.com/pipes/pipe.info?_id=zncl_xDx2xGVxuG5p2IyXQ

    2) Enter your Twitter profile username (don’t put the “@” symbol, just your username)

    3) Click Run Pipe

    4) Click Get as RSS
     
    Social Media SEO, Jan 16, 2010 IP
  3. Sky AK47

    Sky AK47 Member

    Messages:
    298
    Likes Received:
    8
    Best Answers:
    1
    Trophy Points:
    45
    #3
    <?php
    include "./lastRSS.php";
    $rss = new lastRSS;
    
    $rss->cache_dir = './cache';
    $rss->cache_time = 3600;
    $rss->cp = 'UTF-8';
    $rss->date_format = '';
    $rss->items_limit = '2';
    $rss->CDATA = 'nochange';
    
    $rssurl = 'http://twitter.com/statuses/user_timeline/14123683.rss';
    
    if ($rs = $rss->get($rssurl)) { 
                foreach ($rs['items'] as $item) { 
                    echo preg_replace("/andy_murray: /i", "", $item[title]);
    				 echo "<br /><span class=\"smallgrey\">Posted on $item[pubDate]</span><br />";
    				 echo"<div class=\"break\"></div>"; }}
    else {echo "Error: Unable to get feed...";}
    
    ?>
    PHP:
     
    Sky AK47, Jan 16, 2010 IP
  4. NoteScribe

    NoteScribe Peon

    Messages:
    1
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #4
    Hi there,

    This is exactly what I was looking for. I'm using it to create a widget in feedsweep so that I can update a 'news' field on my website via a dedicated twitter feed. The only problem I'm having using the pipe is that it seems to strip links from the tweets as well as the username. Is there a workaround for this?

    Many thanks
     
    NoteScribe, Aug 25, 2011 IP