Entrezが提供しているAPI(以下)を用いて、自分のサイトでpubmed文献検索ができるようにしたいと思っています。使うプログラムはPHP5です。

http://eutils.ncbi.nlm.nih.gov/entrez/query/static/eutils_help.html

具体的には、APIの1つEsearchを使って任意のキーワードに合致するpubmed論文IDのリストを手に入れ、

eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={キーワード}

そのIDのリストをEsummaryに投げて各々のIDの文献のタイトル等のリストを受け取ると方法を考えています。

eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id={IDのリスト。複数の場合はカンマ区切り}

以上を踏まえて以下について教えてください(わかりやすくするために便宜上hiccupで検索したとします)。

hiccupという単語でEsearchをつかって検出したときに抽出される複数のIDをEsummaryになげるときのPHP5でのプログラム記述を教えてください。

よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/04/24 16:49:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ito-yu No.2

回答回数323ベストアンサー獲得回数14

ポイント100pt

なんだ新質問があったのですね;

こっちにも書きます。

さっきは書き損じありました

<form action="search.php" method="post">
Word: <input type="text" name="q">
<input type="submit" value="SEARCH">
</form>
<?php
if(isset($_POST['q'])){
	$url1 = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&amp;term='.$_POST['q'];
	$res1 = file_get_contents($url1);
	if(preg_match_all('/<Id>([0-9]+)<\/Id>/', $res1, $match)){
		$url2 = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&amp;id='.implode(',', $match[1]);
		$res2 = file_get_contents($url2);

		echo $res2;

	}
}

id:biotoday

ito-yuさまありがとうございます。質問がかぶってしまいました。一旦これで閉じて自分のところでいじってみます。

本当にありがとうございました。

2007/04/24 16:47:33

その他の回答1件)

id:felix2007 No.1

回答回数600ベストアンサー獲得回数4

id:biotoday

ありがとうございました。

2007/04/24 04:16:47
id:ito-yu No.2

回答回数323ベストアンサー獲得回数14ここでベストアンサー

ポイント100pt

なんだ新質問があったのですね;

こっちにも書きます。

さっきは書き損じありました

<form action="search.php" method="post">
Word: <input type="text" name="q">
<input type="submit" value="SEARCH">
</form>
<?php
if(isset($_POST['q'])){
	$url1 = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&amp;term='.$_POST['q'];
	$res1 = file_get_contents($url1);
	if(preg_match_all('/<Id>([0-9]+)<\/Id>/', $res1, $match)){
		$url2 = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&amp;id='.implode(',', $match[1]);
		$res2 = file_get_contents($url2);

		echo $res2;

	}
}

id:biotoday

ito-yuさまありがとうございます。質問がかぶってしまいました。一旦これで閉じて自分のところでいじってみます。

本当にありがとうございました。

2007/04/24 16:47:33
  • id:ito-yu
    えと、いちおう、サンプルということでさらさらっと書いたスクリプトですので、そのまま使うといろんな意味で危険です。ふんだんに脆弱性があります。
    非営利な目的のものであれば無償でお手伝いしますので、また気軽に質問してください。
  • id:biotoday
    ito-yuさん、ありがとうございます。昨日頂いたスクリプトを動かしてみたらちゃんと文献データがとれました。この週末に表示できるようにスクリプトを書いてみます。

    無償でのヘルプのお申し出ありがとうございます。ito-yuさんに直接コンタクトすることは可能でしょうか?

    私は以下のサイトを運営しています。もし直接メールのやりとりができるようでしたら、以下のサイトのヘッダ部分のメールにご連絡いただければ幸いです。

    http://www.biotoday.com/

    今回は本当にありがとうございました。ご自身がされているお仕事でもとても優れた成果をおさめられているのだろうと感じました。

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

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

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

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