|
|
|
xml_data = null; # clear previously parsed file and related variables
if (is_file($my_uri) && is_readable($my_uri))
{ # existing and readable uri?
$my_file = fopen($my_uri, "r");
while($my_xml_input = fread($my_file, filesize($my_uri)))
{
$this->xml_data .= $my_xml_input; # add data to xml_data
}
fclose($my_file);
$this->parse_xml_data($this->xml_data); # parse data
}
else
{
trigger_error("supplied argument is not a URI to a (readable) file", E_USER_ERROR);
}
}
var $xml_array = Array(); # xml array from parsed data
function parse_xml_data($my_data)
{ # adapted from class by randlem@gmail.com, tgrabietz@bupnet.de, bbellwfu@gmail.com, Kyle Bresin - see http://nl2.php.net/xml_parse
$this->xml_array = Array(0 => Array()); # clear previously parsed file and related variables; populate first element
$my_parser = xml_parser_create(); # set up parser
xml_set_object($my_parser, $this); # enable parser within object
xml_set_element_handler($my_parser, "xml_tag_open", "xml_tag_close");
xml_set_character_data_handler($my_parser, "xml_tag_data");
if (!xml_parse($my_parser, $my_data))
{
trigger_error("data can not be parsed", E_USER_ERROR); # inspect problems #die(sprintf(" \nError: %s on line %d \n", xml_error_string(xml_get_error_code($my_parser)), xml_get_current_line_number($my_parser)));
}
xml_parser_free($my_parser); # free parser
return $this->xml_array; # return xml array
}
var $my_branch = Array();
function xml_tag_open($my_parser, $my_name, $my_attributes)
{
array_push($this->my_branch, $my_name); # add tag name to branch
$this->xml_array[] = Array(); # nest array in xml array for data
if (count($my_attributes))
{
$this->xml_array[count($this->xml_array) - 1]["ATTRIBUTES"] = $my_attributes; # nest attributes array
}
}
function xml_tag_data($my_parser, $my_data)
{
$this->xml_array[count($this->my_branch)]["TEXT_NODE"][] = $my_data; # add data to nested array
$this->xml_array[count($this->my_branch)]["NODES"][] = "TEXT_NODE"; # add text node to nested NODES array
}
function xml_tag_close($my_parser, $my_name)
{
$this->xml_array[count($this->my_branch) - 1][$this->my_branch[count($this->my_branch) - 1]][] = $this->xml_array[count($this->xml_array) - 1]; # nest arrays to follow document structure
array_pop($this->xml_array); # pop off element that was nested
$this->xml_array[count($this->my_branch) - 1]["NODES"][] = $my_name; # add tag node to nested NODES array
array_pop($this->my_branch); # update branch
}
}
$xmlFile = 'http://www.tetu.com/rss/rss.php';
$xmlData = file_get_contents($xmlFile);
$tpl_td = '
|
{desc}
| ';
if($xmlData)
{
$data = new my_xml_object();
$data->parse_xml_data($xmlData);
if(isset($data->xml_array[0]['RDF:RDF'][0]['ITEM']))
{
echo '';
$max = min(10, count($data->xml_array[0]['RDF:RDF'][0]['ITEM']));
$offset = ceil($max/1);
for($i = 0; $i < $offset; $i++)
{
echo '';
$info = array();
$info['title'] = '';
foreach ($data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i]['TITLE'][0]['TEXT_NODE'] as $part)
{
$info['title'] .= $part;
}
$info['link'] = $data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i]['LINK'][0]['TEXT_NODE'][0];
$info['desc'] = '';
foreach ($data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i]['DESCRIPTION'][0]['TEXT_NODE'] as $part)
{
$info['desc'] .= $part;
}
$info['date'] = $data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i]['DC:DATE'][0]['TEXT_NODE'][0];
$td = $tpl_td;
$td = str_replace('{title}', utf8_decode($info['title']), $td);
$td = str_replace('{link}', $info['link'], $td);
$td = str_replace('{desc}', utf8_decode($info['desc']), $td);
echo $td;
if(isset($data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i+$offset]))
{
$info = array();
$info['title'] = '';
foreach ($data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i+$offset]['TITLE'][0]['TEXT_NODE'] as $part)
{
$info['title'] .= $part;
}
$info['link'] = $data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i+$offset]['LINK'][0]['TEXT_NODE'][0];
$info['desc'] = '';
foreach ($data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i+$offset]['DESCRIPTION'][0]['TEXT_NODE'] as $part)
{
$info['desc'] .= $part;
}
$info['date'] = $data->xml_array[0]['RDF:RDF'][0]['ITEM'][$i+$offset]['DC:DATE'][0]['TEXT_NODE'][0];
$td = $tpl_td;
$td = str_replace('{title}', utf8_decode($info['title']), $td);
$td = str_replace('{link}', $info['link'], $td);
$td = str_replace('{desc}', utf8_decode($info['desc']), $td);
echo $td;
}
else
{
echo ' | ';
}
echo ' ';
}
echo ' ';
}
else
{
echo '';
}
}
else
{
echo '';
}
?>
|
|
QSEXE
Un annuaire gay extr?mement complet avec les meilleurs s?lections de sites porno gay. Bien sur, pour un public averti, de plus de 18 ans !
|
|
GAYCLIC
LE blog gay par excellence sur le web pour savoir tous les potins du milieu gay. Actualit?s internationales, c?l?brit?, baiser de la semaine, soap gay, un v?ritable buffet ? consommer r?guli?rement.
|
|
TETU
TETU, le magasine en France pour tout ce qui touche la communaut? gay. Une v?ritable r?f?rence depuis plusieurs ann?es d?j?. Actualit?s, interviews exclusives, photos de mod?les, on y trouve de tout tout tout !
|
|
SECTEUR GAY
La culture gay ? son meilleur dans ce site ultra complet. Secteur gay regroupe des infos, une section humour (d?capente) ainsi que des biographies de personnalit?s c?l?bres.
|
|
PRIAPE
Priape a d?but? en tant que sexshop gay dans les ann?es 90 avant d'avoir pignon sur rue ? Montr?al plus tard. Maintenant pr?sent partout en Am?rique du Nord et en Europe, Priape a su s'imposer en autre avec sa propre ligne de v?tements Priape Wear.
|
|
SAFEBOY
Un site de rencontre gay fait par des gays. Ici, l'ambiance est amicale et les rencontres sont sympatiques. Peu importe votre ?ge ou votre localit?, vous pourrez discuter avec des gens int?ressants.
|
|
GAY NORMANDIE
La Normandie poss?de maintenant son propre portail gay. Gay Normandie, c'Est un regroupement de gays venant de cette belle r?gion francaise qui ont d?cid? de se recueillir sur un site web. On retrouve de tout dans ce site ultra complet.
|
|