人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP5で
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;
?>


●質問者: kohhi
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●50ポイント

きっちり抜き出したいならこんな具合

<?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;

kohhiさんのコメント
早速書いていただいてありがとうございました。 できました。

2 ● oil999
●50ポイント ベストアンサー

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;
?>


kohhiさんのコメント
いつもお手数おかけします。できました。また、よろしくお願いします。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ