2010-03-23 21 views
1

Je RECEVOIR une erreur:IMDB Grabber PHP

Avis: Undefined variable: contenu dans C: \ wamp \ www \ includes \ imdbgrabber.php la ligne 17

Lorsque vous utilisez ce code:

<?php 
//url 
$url = 'http://www.imdb.com/title/tt0367882/'; 

//get the page content 
$imdb_content = get_data($url); 

//parse for product name 
$name = get_match('/<title>(.*)<\/title>/isU',$imdb_content); 
$director = strip_tags(get_match('/<h5[^>]*>Director:<\/h5>(.*)<\/div>/isU',$imdb_content)); 
$plot = get_match('/<h5[^>]*>Plot:<\/h5>(.*)<\/div>/isU',$imdb_content); 
$release_date = get_match('/<h5[^>]*>Release Date:<\/h5>(.*)<\/div>/isU',$imdb_content); 
$mpaa = get_match('/<a href="\/mpaa">MPAA<\/a>:<\/h5>(.*)<\/div>/isU',$imdb_content); 
$run_time = get_match('/Runtime:<\/h5>(.*)<\/div>/isU',$imdb_content); 

//build content 


line 17 --> $content.= '<h2>Film</h2><p>'.$name.'</p>'; 
    $content.= '<h2>Director</h2><p>'.$director.'</p>'; 
    $content.= '<h2>Plot</h2><p>'.substr($plot,0,strpos($plot,'<a')).'</p>'; 
    $content.= '<h2>Release Date</h2><p>'.substr($release_date,0,strpos($release_date,'<a')).'</p>'; 
    $content.= '<h2>MPAA</h2><p>'.$mpaa.'</p>'; 
    $content.= '<h2>Run Time</h2><p>'.$run_time.'</p>'; 
    $content.= '<h2>Full Details</h2><p><a href="'.$url.'" rel="nofollow">'.$url.'</a></p>'; 

    echo $content; 

//gets the match content 
function get_match($regex,$content) 
{ 
    preg_match($regex,$content,$matches); 
    return $matches[1]; 
} 

//gets the data from a URL 
function get_data($url) 
{ 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 
?> 
+0

http://www.imdb.com/interfaces –

+0

J'ai récemment fait une classe pour cela, pourrait être intéressé: https: // github. com/aramkocharyan/IMDb-Scraper –

Répondre

6

Vous apposent contenu à une variable qui n'existe pas. Modifier la ligne 17 à une cession:

$content = '<h2>Film</h2><p>'.$name.'</p>'; 

Vous pouvez également modifier cette section de code à la suivante, ce qui est légèrement plus propre:

$content = '<h2>Film</h2><p>'.$name.'</p>' 
     . '<h2>Director</h2><p>'.$director.'</p>' 
     . '<h2>Plot</h2><p>'.substr($plot,0,strpos($plot,'<a')).'</p>' 
     // etc 
3

Vous essayez d'ajouter quelque chose à la variable $content lorsqu'elle n'existe pas encore, cela déclenche naturellement une erreur.

Essayez de remplacer $content.= avec $content= dans la ligne 17.

1

En dehors de ce que les autres ont dit qu'il y avait un autre problème avec votre code qui a besoin d'attention. Vous ne vérifiez pas la valeur de retour de preg_match avant de renvoyer la valeur à partir de la fonction get_match. Vous devriez faire quelque chose comme:

if(preg_match($regex,$content,$matches)) 
    return $matches[1]; 
else 
    // return some default 
3

Vous ne recevez pas une erreur, vous recevez un avis parce que vous essayez de concaténer quelque chose à une variable qui n'existe pas. Supprimer le point de .= à la ligne 17 ou mettre $content = '' avant la ligne 17.