Newsgroup: it.comp.www.php
Titolo: Funzione ergi

Cari ragazzi, voglio includere in una pagina solo una tabella contenuta in
un'altra pagina. Ho usato la seguente funzione
(eregi("<TABLE border=\"0\" width=\"100%\">(.*)</TABLE>", $line, $out))
Il risultato č una pagina vuota, credo perché i tags della tabella in
questione, ovviamente, non risiedono nella stessa riga. Come faccio a
prendere la tabella? E se la pagina contiene piů tabelle, come faccio a
prenderle tutte?
Per tagliare la testa al toro potrei includere nella mia pagina tutto il
contenuto dell'altra pagina escluso il tag body, ma come faccio ad
escluderlo?
Scusate la mia ignoranza in PHP, ma sto cercando d'imparare.
Grazie di cuore
--
GENNARO MORRA
SITO INTERNET: 
www.bollicinebar.com
E-MAIL: 
webm...@bollicinebar.com


:-)
Alex

 unici nella pagina, se ce ne sono di piu' č probabile che non funzioni...
beh, invece si puo' usando i preg (non ereg)
si usa la funzione preg_match_all, metti la possibilita' greedy (per
prendere sempre tag vicini), il contenuto del file deve essere tutto in una
stringa (non un array). Una espressione potrebbe essere questa:
$expr = "/<TABLE.*>(.*)</TABLE>/siU";
Ti metto un esempio, magari ti funziona (non testato in questa
configurazione, per il resto lo uso con successo):
//leggi file $idxFile
$fp = fopen ($idxFile, "r");
if (!$fp)
{
    echo "File read error: $idxFile<BR>\n";
    exit;
}
$file = fread ($fp, filesize ($idxFile));
fclose ($fp);
// preg, in $data ci sara' un array di array con tutte le tabelle e matches
(2 D)
$tmp=preg_match_all($expr, $file,$data);
echo $tmp . " items found<br>\n";
// puoi anche stampare con print_r ($data) ma i TAG del HTML rompono...
for ($i=0; $i<count($data); $i++) // quick and dirty scan
{
    for ($j=0; $j<count($data[$i]); $j++)
        echo "$i.$j " . htmlentities($data[$i][$j]) . "<BR><BR>\n";
    echo "<HR>\n";
}
J.

 > unici nella pagina, se ce ne sono di piu' è probabile che non


 lo script è il seguente
Sorry, dicevo che non ho testato:
Unknown modifier si referisce al /TABLE
e deve essere \/TABLE (/ usato come segno per il modificatore)
$expr = "/<TABLE.*>(.*)<\/TABLE>/siU";
oppure
$expr = "=<TABLE.*>(.*)</TABLE>=siU";
(leggi un po' nel manuale sui preg_ : delizioso)
P.S.: Quotare sempre prima, poi il tuo commento...


C'e' un altro errore se vuoi leggere siti (filesize non va su siti),
ecco il codice funzionante (provato sta volta e trova 5 tabelle)...
<?php
$expr = "/<TABLE(.*)>(.*)<\/TABLE>/siU";
$istat = "
http://www.istat.it/Anotizie/Acom/precon/indiceistat/indici.html
";
$fp = fopen($istat, "r");
if (!$fp) {
    echo "<p>Errore nell'apertura del file remoto.\n";
    echo $istat;
    exit;
}
$file="";
while (!feof($fp))
  $file .= fread ($fp, 1024);


strip_tags()

 strip_tags()
che centra?
BTW: quotare?


Grazie a tutti x l'aiuto
P.S. Dove trovo un buon manuale PHP? Vorrei imparare

Lo script funziona, ma restituisce testo e non una pagina html con le
tabelle


 >         echo "$i.$j " . htmlentities($data[$i][$j]) . "<BR><BR>\n";
Certo ti fa vedere come testo: htmlentities fa questo.
Prova a sostituire con questo (ma ci sara' n po di casino, perche' vedrai
piu' tabelle).
         echo "$i.$j " . $data[$i][$j] . "<BR><BR>\n";

Cari ragazzi, ho elaborato lo script di Jurgen per ottenere la pagina html
contenente le tre tabelle che volevo.
Lo script č diventato cosě
<?php
$expr = "/<TABLE(.*)>(.*)<\/TABLE>/siU";
$istat = "
http://www.istat.it/Anotizie/Acom/precon/indiceistat/indici.html
";
$fp = fopen($istat, "r");
if (!$fp) {
echo "<p>Errore nell'apertura del file remoto.\n";
echo $istat;
exit;
}
$file="";
while (!feof($fp))
$file .= fread ($fp, 1024);
fclose ($fp);
$tmp = preg_match_all($expr, $file,$data);
for ($i=0; $i<count($data); $i++) // quick and dirty scan
{
for ($j=1; $j<count($data[$i+1]); $j++)
echo ($data[$i][$j]);
if ($j = 4) {
exit;
}
}
?>
Tutto funziona, mi resta solo un problema da risolvere, purtroppo
l'intestazione della terza e ultima tabella non č contenuta nella stessa e
di conseguenza non compare nemmeno nella mia pagina visto che lo script
cattura solo ciň che cč tra i tag table. Pensavo di poter risolvere il
problema inserendo
if ($j = 3) {
echo "<p>coefficienti\n";
}
dopo echo ($data[$i][$j]);
ma invece la scritta coefficienti compare dopo l'ultima tabella anche
cambiando la condizione (j=2, j=1). Quale metodo posso usare per posizionare
l'intestazione prima dell'ultima tabella?
Grazie
Gennaro

 }
qui c'e' un errore comune: hai assegnato a $j un 3, invece volevi fare un
$j==3
J.