我收到了一个错误:
注意:未定义的变量:第17行的C:\ wamp \ www \ includes \ imdbgrabber.php中的内容
使用此代码时:
<?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 :(得分:6)
您正在将内容附加到不存在的变量。将第17行更改为作业:
$content = '<h2>Film</h2><p>'.$name.'</p>';
您还可以将该部分代码更改为以下内容,稍微更整洁:
$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
答案 1 :(得分:3)
如果变量$content
尚不存在,您正试图添加内容,这自然会触发错误。
尝试使用第17行中的$content.=
替换$content=
。
答案 2 :(得分:3)
您没有收到错误,因为您尝试将某些内容连接到不存在的变量,因此您收到了通知。从第17行的.=
处删除该点,或在第17行之前添加$content = ''
。
答案 3 :(得分:1)
除了其他人所说的,您的代码还有另一个需要注意的问题。在从函数preg_match
返回值之前,您不会检查get_match
的返回值。你应该做点什么:
if(preg_match($regex,$content,$matches))
return $matches[1];
else
// return some default