Vi mostriamo adesso un file PHP che fa il Parser di una pagina xml. Ossia nel caso specifico di un feed. Vi dico la sincera verità. Questo script in PHP per fare il parsing di un file nasce dall’esigenza di avere già provato diverse librerie in rete che fanno questo “lavoro” ma con risultati non soddisfacenti. E allora abbiamo realizzato questo semplice script che appunto si propone la realizzazione di un parser che sia ad uopo per le nostre necessità. Come potete vedere si tratta di uno script realmente molto semplice che non fa altro che leggere un file e con l’ausilio delle funzioni htmlspecialchars, htmlenteties e strpos identificare la giusta occorrenza.

Come potete vedere c’e’ nella funzione subrstr utilizziamo dei valori in addizione alla variabile $pos. Questi valori non hanno nessun altra necessità se non quelli di essere specifici per un feed xml. Se invece avete altra necessità ossia magari quella di fare il parser PHP di un file html normale non dovrete fare altro che modificare i valori da aggiungere o sottrarre secondo le vostre necessità. Quindi senza altri preamboli questo è lo script in questione

Script PHP Parser feed XML

PHP script parser xml

$i=1;

$fileName = "http://url_del_feed/";
 $fileData = @file($fileName);
 if ($fileData != false) {
 foreach($fileData as $line_num => $line) {
 

$mystring =htmlspecialchars(htmlentities($line, ENT_QUOTES));

$mys=htmlentities($line);

$findme = 'href';
 $pos = strpos($mystring, $findme);


 if ($pos === false) {

 } else {


$lun=strlen($mystring);

$mys=substr($mystring,$pos , $lun-$pos);

$findme =htmlspecialchars(htmlentities(">", ENT_QUOTES));

$pos = strpos($mys, $findme);

 if ($pos === false) {


 } else {




$link[$i]=substr($mys,0,$pos-6);



$link[$i]= html_entity_decode($link[$i]);



$link[$i]= strip_tags($link[$i]);


$mystring = $link[$i];
 $findme = 'www';
 $pos = strpos($mystring, $findme);


 if ($pos === false) {

 } else {


$lun2=strlen($link[$i]);
 $link_provvisorio[$i]=substr($mystring ,$pos+4, $lun2);



$mystring =htmlspecialchars(htmlentities($link_provvisorio[$i]));


$findme="quot;";
 $pos = strpos($mystring, $findme);


 if ($pos === false) {

 } else {

 $link_def[$i]=substr($link_provvisorio[$i],0,$pos-9);

}

}

$i++;

}


}

}

}

 

Il valore del link definitivo ovviamente si trova il link_def

 

Puoi fare il donwload del file da qui

 

[sdm_download id=”4622″ fancy=”0″]