PHP script - adding target="_blank" to links

booksgo

New Member
Messages
109
Reaction score
0
Points
0
Can anyone help with adding <rel="nofollow" target="_blank"> to the code for the 'link' below? I tried adding it in various places, without success. Thanks for any help.

Code:
<?php
/*
	RSS Extractor and Displayer
	(c) 2007  Scriptol.com - Licence Mozilla 1.1.
	rsslib.php
	
	Requirements:
	- PHP 5.
	- A RSS feed.
	
	Using the library:
	Insert this code into the page that displays the RSS feed:
	
	<?php
	require_once("rsslib.php");
	echo RSS_Display("http://www.xul.fr/rss.xml", 25);
	?>
	
*/

$RSS_Content = array();

function RSS_Tags($item, $type)
{
		$y = array();
		$tnl = $item->getElementsByTagName("title");
		$tnl = $tnl->item(0);
		$title = $tnl->firstChild->data;

		$tnl = $item->getElementsByTagName("link");
		$tnl = $tnl->item(0);
		$link = $tnl->firstChild->data;

		$tnl = $item->getElementsByTagName("description");
		$tnl = $tnl->item(0);
		$description = $tnl->firstChild->data;

		$y["title"] = $title;
		$y["link"] = $link;
		$y["description"] = $description;
		$y["type"] = $type;
		
		return $y;
}


function RSS_Channel($channel)
{
	global $RSS_Content;

	$items = $channel->getElementsByTagName("item");
	
	// Processing channel
	
	$y = RSS_Tags($channel, 0);		// get description of channel, type 0
	array_push($RSS_Content, $y);
	
	// Processing articles
	
	foreach($items as $item)
	{
		$y = RSS_Tags($item, 1);	// get description of article, type 1
		array_push($RSS_Content, $y);
	}
}

function RSS_Retrieve($url)
{
	global $RSS_Content;

	$doc  = new DOMDocument();
	$doc->load($url);

	$channels = $doc->getElementsByTagName("channel");
	
	$RSS_Content = array();
	
	foreach($channels as $channel)
	{
		 RSS_Channel($channel);
	}
	
}


function RSS_RetrieveLinks($url)
{
	global $RSS_Content;

	$doc  = new DOMDocument();
	$doc->load($url);

	$channels = $doc->getElementsByTagName("channel");
	
	$RSS_Content = array();
	
	foreach($channels as $channel)
	{
		$items = $channel->getElementsByTagName("item");
		foreach($items as $item)
		{
			$y = RSS_Tags($item, 1);	// get description of article, type 1
			array_push($RSS_Content, $y);
		}
		 
	}

}


function RSS_Links($url, $size)
{
	global $RSS_Content;

	$page = "<ul>";

	RSS_RetrieveLinks($url);
	if($size > 0)
		$recents = array_slice($RSS_Content, 0, $size);

	foreach($recents as $article)
	{
		$type = $article["type"];
		if($type == 0) continue;
		$title = $article["title"];
		$link = $article["link"];
		$page .= "<li><a href=\"$link\">$title</a></li>\n";			
	}

	$page .="</ul>\n";

	return $page;
	
}



function RSS_Display($url, $size)
{
	global $RSS_Content;

	$opened = false;
	$page = "";

	RSS_Retrieve($url);
	if($size > 0)
		$recents = array_slice($RSS_Content, 0, $size);

	foreach($recents as $article)
	{
		$type = $article["type"];
		if($type == 0)
		{
			if($opened == true)
			{
				$page .="</ul>\n";
				$opened = false;
			}
			$page .="<b>";
		}
		else
		{
			if($opened == false) 
			{
				$page .= "<ul>\n";
				$opened = true;
			}
		}
		$title = $article["title"];
		$link = $article["link"];
		$description = $article["description"];
		$page .= "<li><a href=\"$link\">$title</a>";
		if($description != false)
		{
			$page .= "<br>$description";
		}
		$page .= "</li>\n";			
		
		if($type==0)
		{
			$page .="</b><br />";
		}

	}

	if($opened == true)
	{	
		$page .="</ul>\n";
	}
	return $page."\n";
	
}


?>
 
Last edited:

Scoochi2

New Member
Messages
185
Reaction score
0
Points
0
Copy all that into a simple notepad program or equivalent.
Use search+replace and replace;
<a href=
with
<a rel='nofollow' target='_blank' href=
 

vol7ron

New Member
Messages
434
Reaction score
0
Points
0
It is wrong to suggest using target="". W3 has deprecated this tag and it does not conform to strict w3 standards.

One solutions is to:
<a href="http://forums.x10hosting.com/programming-help/yourpage.html" onclick="window.open('yourpage.html');return false;">

Another alternative that I like to do is change the links using Javascript on the window load. I give each link I want to change a class of "updateLink." Note: if you set more than one class to your links, then you'll have to use a regular expression. Setting the target, using Javascript is perfectly acceptable as W3 specification does not cover DOM control, which JS is.

Code:
   for (var e in document.links)
      if (document.links[e].className == "updateLink")
         document.links[e].target="_blank";

The problem with this is that users may have JS turned off. The result will be that the link will open in the same browser window as the page, which is okay because you still have the back button to work with.
 
Last edited:

booksgo

New Member
Messages
109
Reaction score
0
Points
0
Copy all that into a simple notepad program or equivalent.
Use search+replace and replace;
<a href=
with
<a rel='nofollow' target='_blank' href=


It works! Thanks for your help.
Edit:
It is wrong to suggest using target="". W3 has deprecated this tag and it does not conform to strict w3 standards.

It's OK for Transitional though, and it works so thats good enough for me ;)
 
Last edited:

vol7ron

New Member
Messages
434
Reaction score
0
Points
0
It will work with transitional, but so does align="center" - it doesn't mean you should use it. Transitional should only be used when there is no other choice, but I provided one.

Every page should try to adhere to strict standards as it will not only improve search engine rankings, but the fact will be that transitional will one day be dropped and you'll be forced to reason with strict anyhow.
 
Last edited:

booksgo

New Member
Messages
109
Reaction score
0
Points
0
I know you are right really, but at the moment doing things to Transitional is hard enough for me :)
 
Top