Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [PHP] Problema con & in XML SAX

    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($fp4096) )
    {
    if( !
    xml_parse($xml_parser$datafeof($fp)) )
    {
    break; 
    // get out of while loop if we're done with the file
    }
    }
    xml_parser_free($xml_parser);
    ?>
    Codice PHP:
    <?php
    for( $i=$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:
    TitleInformatica
    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&amp;t=11</url*>

    PS: Ignorate il *, č per non farlo interpretare dal bbcode del forum

  2. #2
    Invece di &, utilizza & amp; (senza lo spazio tra & e amp

  3. #3
    Ciao,

    ho provato a fare:

    $url = str_replace("&", "& amp;", $url); //Senza spazio ovviamente

    e poi $url mandarlo in query....ma non cambia nulla

  4. #4
    Non c'č nessuno che sā come aiutarmi?

  5. #5
    Originariamente inviato da filippo.toso
    Invece di &, utilizza & amp; (senza lo spazio tra & e amp
    Questo escape l'ho giā fatto quando veniva scritto il file xml, ma quando lo vado a leggere mi spezza la stringa!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.