Ciao,
ho fatto una sorta di sitemap in xml. Quando la vado a leggere con PHP in modalitā SAX ho un problema con l'url.
La variabile url č infatti composta da parametri come &data=3&dsds=34 ecc.ec...
Il problema č che questi vengono tagliati...
VI posto il code...
Codice PHP:
<?php
$filename="sitemap.xml";
if( ! ($fp = fopen( "$filename" , "r" )) )die("Couldn't open xml file!");
$person_counter = 0;
$person_data = array();
$xml_current_tag_state = '';
function startElementHandler( $parser, $element_name, $element_attribs )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
$xml_current_tag_state = $element_name;
}
function endElementHandler( $parser, $element_name )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
$xml_current_tag_state = '';
if( $element_name == "LINK" )
{
$person_counter++;
}
}
function characterDataHandler( $parser , $data )
{
global $person_counter;
global $person_data;
global $xml_current_tag_state;
if( $xml_current_tag_state == '' )
return;
if( $xml_current_tag_state == "TITLE" ) {
$person_data[$person_counter]["title"] = $data;
}
if( $xml_current_tag_state == "URL" ) {
$person_data[$person_counter]["url"] = $data;
}
if( $xml_current_tag_state == "LANG" ) {
$person_data[$person_counter]["lang"] = $data;
}
}
if( !($xml_parser = xml_parser_create()) )
die("Couldn't create XML parser!");
xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($xml_parser, "characterDataHandler");
while( $data = fread($fp, 4096) )
{
if( !xml_parse($xml_parser, $data, feof($fp)) )
{
break; // get out of while loop if we're done with the file
}
}
xml_parser_free($xml_parser);
?>
Codice PHP:
<?php
for( $i=0 ; $i < $person_counter ; ++$i )
{
//$font_color = $person_data[$i]["alignment"] == "good" ? "#0000ff" : "#ff0000";
echo "Title: " . $person_data[$i]["title"] . "
\n";
echo "URL: " . $person_data[$i]["url"] . "
\n";
echo "Language: " . $person_data[$i]["lang"] . "
\n";
//echo "nuovo_tag_xml: " . $person_data[$i]["nuovo_tag_xml"] . "
\n"; //se vuoi aggiungere nuovo campo
echo "
\n";
}
?>
Questo č l'output:
Codice PHP:
Title: Informatica
URL: t=14
Language: it
Come vedete URL č: t=14
invece dovrebbe essere: www.sito.it/forum/viewtopic.php?f=5&t=14
Nel file XML ho:
<*url>http://www.sito.it/forum/viewtopic.php?f=2&t=11</url*>
PS: Ignorate il *, č per non farlo interpretare dal bbcode del forum