Espressione Regolare

Super_nio

Nuovo Utente
7 Dic 2012
16
0
0
Salve dovrei utilizzare un'espressione regolare per recuperare la descrizione di un prodotto da una pagina html.
La descrizione si trova in un meta tag e avrei pensato a una cosa del genere:

if(preg_match('/(og:description)(.+)(\. \/>)$/', $preleva , $reg)){
var_dump($reg);
}

dovrebbe prendere dalla stringa "og:description" fino a ". />" e mettere tutto nell'array reg.Unico problema è che mi restituisce una pagina bianca perchè sicuramente non andrà bene l'espressione.
 
Fai prima utilizzando una libreria come simple_html_dom

Mi sono informato su questa libreria e mi pare da capire che è ciò che mi serve a me.
Ho provato ad utilizzarla ma quando avvio lo script mi si blocca il browser e mi riempie la ram.
Potresti farmi un esempio di come posso adattare tale libreria al mio esempio soprastante?
 
Mi sono informato su questa libreria e mi pare da capire che è ciò che mi serve a me.
Ho provato ad utilizzarla ma quando avvio lo script mi si blocca il browser e mi riempie la ram.
Potresti farmi un esempio di come posso adattare tale libreria al mio esempio soprastante?

Almeno che tu non abbia fatto 200 cicli for dubito che si sia impallata da sola, posta il codice tuo eventualmente cosi si aggiusta
 
Almeno che tu non abbia fatto 200 cicli for dubito che si sia impallata da sola, posta il codice tuo eventualmente cosi si aggiusta
PHP:
$count="SELECT * FROM Modelli";
$return=mysql_query($count);
$roww=mysql_num_rows($return);
$html=new simple_html_dom();
//echo $roww; //contiene il numero delle righe presenti nella tabella
for($k=1;$k<2;$k++){
$sql="SELECT Link_Modello FROM Modelli WHERE Modello_id='$k'";
$ris=mysql_query($sql);
    while($row=mysql_fetch_row($ris)){
        

    $val1=$row[0];
    $preleva=file_get_contents($val1);
    //if(preg_match('/(og:description)(.+)(\. \/>)$/', $preleva , $reg)){var_dump($reg);}
    $html=file_get_html('$val1');
    $html->find('description');
    var_dump($html);

    }

}

$val1 contiene un link per ogni riga della tabella presente nel database.
Gli errori che mi escono fuori sono :
Warning: file_get_contents($val1): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/simple_html_dom.php on line 76

Fatal error: Call to a member function find() on a non-object in /Applications/MAMP/htdocs/modelli_portatili.php on line 190

Il primo non so da dove lo pesca dato che la riga 76 è commentata addirittura.Per quanto riguarda il secondo di sicuro sbaglierò ad usare la funzione find della libreria.
 
Ultima modifica di un moderatore:
Nada non riesco proprio a lavorarci con questa libreria,sarà anche perchè sono alle prime armi.
Se si dovesse trovare una soluzione con le funzioni regolari o altro come potrei fare? dov'è l'errore nel mio codice al primo post?
 
Quello che tu vuoi fare si chiama scraping e qui su mrwebmaster c'è una buona guida.
Ti invito a prestare particolare attenzione quando usa questo codice Che non necessità di altre spiegazioni oltre ai commenti che già ci sono.
PHP:
<?php
$pos1 = strpos($get, "<form");   
//identifico la prima occorrenza di apertura del tag form

$pos2 = strpos($get, "</form>", $pos1); 
//identifico la prima occorrenza di chiusura del tag form a partire da pos1

$text = substr($get,$pos1,$pos2-$pos1+7); 
//estraggo il codice html ivi contenuto
//+7 per acquisire anche il tag </form>

echo $text; // visualizzo il codice html
?>
 

Discussioni simili