http://ja.wikipedia.org/wiki/大久保佳代子
(実際はエンコードされます)
の「来歴」という文字から「人物」という文字まで、を
表示しなさい、というプログラムを書きました。
'nothing'の方に入ってしまいます。
下記プログラムを修正していただけると助かります。
<?PHP
$keyword = '大久保佳代子';
$url = 'http://ja.wikipedia.org/wiki/' . urlencode($keyword);
$contents = file_get_contents($url);
if (preg_match('/"来歴"(.*)"人物"/i',$contents,$match)){
$raireki = $match[1];
}else{
$raireki = 'nothing';
}
echo $raireki;
?>
Wikipediaの記事の構造は複雑なので、1行1行読み込んで処理していく方が良いと思います。
下記にプログラムを掲げます。
<?php $keyword = '大久保佳代子'; $url = 'http://ja.wikipedia.org/wiki/' . urlencode($keyword); $fp = fopen($url, 'r'); while (!feof($fp)) { $str = fgets($fp); if (preg_match('/<span class=\"mw-headline\"[^>]+>来歴<\/span><\/h2>/iu', $str, $match)) { $raireki = ''; while (!feof($fp)) { $str = fgets($fp); if (preg_match('/<span class=\"mw-headline\"[^>]+>人物<\/span><\/h2>/iu', $str, $match)) break; $raireki .= $str; } } } fclose($fp); if ($raireki == '') $raireki = 'nothing'; echo $raireki; ?>
きっちり抜き出したいならこんな具合
<?PHP $keyword = '大久保佳代子'; $url = 'http://ja.wikipedia.org/wiki/' . urlencode($keyword); $contents = file_get_contents($url); if (preg_match('/class="editsection".*?来歴.*?<\/h2>(.*?)<h2/is',$contents,$match)){ $raireki = $match[1]; }else{ $raireki = 'nothing'; } echo $raireki;
早速書いていただいてありがとうございました。
できました。
Wikipediaの記事の構造は複雑なので、1行1行読み込んで処理していく方が良いと思います。
下記にプログラムを掲げます。
<?php $keyword = '大久保佳代子'; $url = 'http://ja.wikipedia.org/wiki/' . urlencode($keyword); $fp = fopen($url, 'r'); while (!feof($fp)) { $str = fgets($fp); if (preg_match('/<span class=\"mw-headline\"[^>]+>来歴<\/span><\/h2>/iu', $str, $match)) { $raireki = ''; while (!feof($fp)) { $str = fgets($fp); if (preg_match('/<span class=\"mw-headline\"[^>]+>人物<\/span><\/h2>/iu', $str, $match)) break; $raireki .= $str; } } } fclose($fp); if ($raireki == '') $raireki = 'nothing'; echo $raireki; ?>
いつもお手数おかけします。できました。また、よろしくお願いします。
いつもお手数おかけします。できました。また、よろしくお願いします。
2013/01/25 17:39:43