In un nostro recente lavoro ci è stato richiesto il collegamento ad una porzione di html da un sito esterno. Solitamente questo tipo di estensione viene effettuata utilizzando la tecnologia fornita dagli Iframe che, sostanzialmente, concede sul nostro sito l’apertura di una finestra (delle dimensioni volute) che si affaccia sul sito esterno. Il problema di questa tecnica è la gestione html del sito incluso.
Quando non siamo i proprietari del sito esterno diventa difficile, se non impossibile, gestire le funzioni del codice. Nel nostro caso specifico dovevamo includere il codice HTML da un sito, cercando di carpirne una serie di news, e ri-pubblicarle sul nostro sito.
Utilizzando gli Iframe abbiamo ottenuto un buon risultato ma, cliccando sui collegamenti ipertestuali, questi si aprivano all’interno della stessa finestra Iframe, rendendo impossibile la consultazione. L’unica soluzione possibile è stata la cattura dell’intero codice HTML utilizzato e, effettuando parsing riga dopo riga, siamo riusciti non solo a catturare la porzione di codice interessata, ma anche a modificarla introducendo, ad esempio, il target _blank agli url delle notizie, per evitare la dispersione dei nostri utenti.
Ad esempio, se volessimo includere la porzione di codice presente sul sito www . sitodaincludere . yyy:
In tal caso dobbiamo includere una lista di elementi che possiedono immagini e collegamenti ipertestuali, riferiti con path relativo, quindi non utilizzabili dal nostro sito. Vediamo ora il codice PHP utilizzato per scaricare la pagina, parserizzare e stampare a video la porzione di codice che ci interessa, sostituendo le parti da settare in base al nostro sito:
',$r)){
$bool=true;
$codice=$codice.$r
}
//Fin tanto che la variabile di controllo è vera
if($bool){
//Sostituiamo nella riga corrente, i path relativi con quelli assoluti
$r=eregi_replace("/images/arrow_red.png", "http://www.sitodaincludere.yyy/images/arrow_red.png", $r);
$r=eregi_replace("',$r)){
$codice=$codice.$r;
//Settiamo a false la variabile di controllo
$bool=false;
}
}
}
//Stampiamo a video il risultato ottenuto
echo $codice;
?>
Includendo questo script PHP nel punto preciso della nostra pagina otterremo:
Buona programmazione a tutti!