PHP(5.3)で 

Wikipediaの「漫才師一覧」から
simple_html_dom.php を使用して
Wikipediaと、ほぼ同じように、漫才師一覧を表示させるプログラムを書こうとしています。

http://ja.wikipedia.org/wiki/漫才師一覧

1.$keyword (漫才師一覧)をエンコードし

2.<li>タグ の中の
<a>タグのURLとinnertextを抽出して一覧表示させたいです。

例えば、
アームストロング(栗山直人、安村昇剛)
の「アームストロング」の文字列の部分はリンクがある。
栗山直人、安村昇剛にはリンクがない。

次の行
相方不在(さな、吉野ももみ)
は、「相方不在」「さな」「吉野ももみ」
にそれぞれ別のリンクがある。

*要は、http://ja.wikipedia.org/wiki/漫才師一覧
の「あ」行から「わ」行までと、同じように表示しようとしています。

参考までに、僕が下記のプログラム書いてみましたが、
エラーになります。
下記コードを基に書き直していただけると助かります。

http://test01.1811way.com/archives/10
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/10/06 21:30:20
  • 終了:2012/10/07 16:29:02

ベストアンサー

id:Cherenkov No.4

Cherenkov回答回数1503ベストアンサー獲得回数4932012/10/07 14:20:52

ポイント200pt

回答2をforkして。utf-8で保存してください。

<?php
header('Content-Type:text/html; charset=UTF-8');
echo '<style>a.new { color: #BA0000; }</style>';

require_once("simple_html_dom.php");
$keyword = '漫才師一覧';
$url = 'http://ja.wikipedia.org/wiki/' . urlencode($keyword);
$html   = file_get_html($url);
$items  = $html->find('#mw-content-text li');
foreach ($items as $item) {
	if (preg_match('/href\=\"\/wiki\/|class=\"new\"/ui', $item->innertext)) {
		$link = preg_replace('/href="/ui', 'href="http://ja.wikipedia.org', $item->innertext);
		echo $link .'<br />';
	}
}
他2件のコメントを見る
id:Cherenkov

回答を修正しました。ご確認下さい。

2012/10/07 15:41:51
id:kohhi

早速お返事ありがとうございました。
できました。

2012/10/07 16:26:20

その他の回答(3件)

id:sanada33 No.1

みかん回答回数293ベストアンサー獲得回数32012/10/06 22:35:02

find('a');//foreach($items as $item){ echo $item->innertext .'
';

id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202012/10/06 22:43:59

ポイント100pt

ご質問のスクリプトの "$url = ..." の行末のセミコロンが抜けているためにエラーだったのだと思います。
さらに下記のように改良してみました。

<?php
require_once("simple_html_dom.php");
$keyword = '漫才師一覧';
$url = 'http://ja.wikipedia.org/wiki/' . urlencode($keyword);
$html   = file_get_html($url);
$items  = $html->find('li');
foreach($items as $item) {
    if (!isset($item->id) && preg_match('/^<a href\=\"\/wiki\//ui', $item->innertext)) {
        echo $item->innertext .'<br />';
    }
}
?>
id:kohhi

早速お返事ありがとうございました。

2012/10/07 16:26:40
id:KeyKey No.3

KeyKey回答回数29ベストアンサー獲得回数42012/10/07 14:14:15

ポイント20pt

リンクのある漫才師の一覧をリンク付きで表示したいということでしょうか?
できるだけ漫才師の部分だけを抽出するようにしたつもりですが、以下のものでいかがでしょうか。

<?php
require_once("simple_html_dom.php");
$keyword = '漫才師一覧';
$url = 'http://ja.wikipedia.org/wiki/' . urlencode($keyword);
$html   = file_get_html($url);

foreach ($html->find('div#mw-content-text ul li a') as $item) {
	echo '<a href="' . $item->href . '" title="' . $item->title . '">' . $item->innertext . '</a>';
	echo "<br />\n";
}
?>
id:kohhi

早速お返事ありがとうございました。

2012/10/07 16:26:30
id:Cherenkov No.4

Cherenkov回答回数1503ベストアンサー獲得回数4932012/10/07 14:20:52ここでベストアンサー

ポイント200pt

回答2をforkして。utf-8で保存してください。

<?php
header('Content-Type:text/html; charset=UTF-8');
echo '<style>a.new { color: #BA0000; }</style>';

require_once("simple_html_dom.php");
$keyword = '漫才師一覧';
$url = 'http://ja.wikipedia.org/wiki/' . urlencode($keyword);
$html   = file_get_html($url);
$items  = $html->find('#mw-content-text li');
foreach ($items as $item) {
	if (preg_match('/href\=\"\/wiki\/|class=\"new\"/ui', $item->innertext)) {
		$link = preg_replace('/href="/ui', 'href="http://ja.wikipedia.org', $item->innertext);
		echo $link .'<br />';
	}
}
他2件のコメントを見る
id:Cherenkov

回答を修正しました。ご確認下さい。

2012/10/07 15:41:51
id:kohhi

早速お返事ありがとうございました。
できました。

2012/10/07 16:26:20

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません