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

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/01/25 17:40:00
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:oil999 No.2

回答回数1728ベストアンサー獲得回数320

ポイント50pt

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

id:kohhi

いつもお手数おかけします。できました。また、よろしくお願いします。

2013/01/25 17:39:43

その他の回答1件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント50pt

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

<?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;
id:kohhi

早速書いていただいてありがとうございました。
できました。

2013/01/25 17:39:04
id:oil999 No.2

回答回数1728ベストアンサー獲得回数320ここでベストアンサー

ポイント50pt

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

id:kohhi

いつもお手数おかけします。できました。また、よろしくお願いします。

2013/01/25 17:39:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません