Ragazzi ho un estrazione dati da codice HTML che mi sta facendo impazzire.. Devo estrarre dei dati da una tabella in una pagina html, ed ho creato una funzione apposita tramite le espressioni regolari, che fa il suo lavoro. Il fatto è che riesco ad estrarre gli argomenti in blocco, cioè tutto il blocco all'interno dei tag di tabella quando a me servirebbe estrarre i valori contenuti nei campi singolarmente. La tabella è molto carica di informazioni "spazzatura" e mi interessa isolare solo l'info effettivamente a me utile.
Mi spiego meglio direttamente tramite il codice:
QUESTA è LA TABELLA
Codice PHP:
<TABLE CLASS="menuplaintable" summary="This layout table holds the menu items">
<TR>
<TD CLASS="mpdefault"></TD>
<TD CLASS="mpdefault">
[url="/tsbss/pls/TEST/twbkwbis.P_GenMenu?name=bmenu.P_GenMnu"]Personal Information[/url]
<SPAN class=menulinkdesctext >View and update emergency contact information; Review name or social security number change information.</SPAN>
</TD>
</TR>
<TR>
<TD CLASS="mpdefault"></TD>
<TD CLASS="mpdefault">
[url="/tsbss/pls/TEST/twbkwbis.P_GenMenu?name=bmenu.P_StuMainMnu"]Student and Financial Aid[/url]
<SPAN class=menulinkdesctext >Register for classes; Display your class schedule; View your holds; Display grades/transcripts; Review financial aid requirements/awards; [b]Charges/Payments/Refunds - Please view your account through the online Account Center. The link is located after you login to Braveweb but before you enter Banner Self Service.[/b]</SPAN>
</TD>
</TR>
<TR>
<TD CLASS="mpdefault"></TD>
<TD CLASS="mpdefault">
[url="/tsbss/pls/TEST/twbkwbis.P_GenMenu?name=pmenu.P_MainMnu"]Employee[/url]
<SPAN class=menulinkdesctext >Time sheets, time off, benefits, leave or job data, paystubs, W4 data.</SPAN>
</TD>
</TR>
</TABLE>
Questo è lo script php che ho realizzato:
Codice PHP:
<?php
//salvo la tabella sotto stringa
$url = "lapaginachecontienelatabella.html";
$page = @file_get_contents($url) or die('Could not access file: $url');
//estraggo in blocco la tabella che mi serve
$regexp = "/\s<TABLE CLASS=\"menuplaintable\" summary=\"This layout table holds the menu items\">(.*)<\/TABLE>/siU";
preg_match_all("$regexp", $page, $matches, PREG_SET_ORDER);
foreach($matches as $match) {
//print_r($match);
$Result = $match[0];
}
echo $Result;
?>
Quello che vorrei ottenere è raffinare la ricerca per isolare solamente i 3 links e i relativi 3 nomi con relativi 3 descrizioni. Magari inserendo i dati estratti in 3 array differenti per poi richiamarli quando li devo riutilizzare:
ARRAY UNO: arrayurl
conterrà i vari link nudi e crudi
$arrayurl [0] = "/tsbss/pls/TEST/twbkwbis.P_GenMenu?name=bmenu.P_GenMnu";
$arrayurl [1] = "/tsbss/pls/TEST/twbkwbis.P_GenMenu?name=bmenu.P_StuMainMnu";
$arrayurl[2] ="/tsbss/pls/TEST/twbkwbis.P_GenMenu?name=pmenu.P_MainMnu" ;
ARRAY DUE: arraytitoli
conterrà i nomi associati ai link
$arraytitoli [0] = "Personal Information";
$arraytitoli [1] = "Student and Financial Aid";
$arraytitoli [2] = "Employee";
ARRAY TRE: arraydescrizioni
conterrà le tre descrizioni delle pagine a cui puntano i link.
$arraydescrizioni [0] = "View and update emergency contact information; Review name or social security number change information."
$arraydescrizioni [1] = "Register for classes; Display your class schedule; View your holds; Display grades/transcripts; Review financial aid requirements/awards; [b]Charges/Payments/Refunds - Please view your account through the online Account Center. The link is located after you login to Braveweb but before you enter Banner Self Service.";
$arraydescrizioni [2] = "Time sheets, time off, benefits, leave or job data, paystubs, W4 data.";
Come fareste per isolare questi valori singolarmente cosi come li ho proposti in quel caos di tag e codice html mal scritto che è in quella tabella?
:mc:
:help: