1

NCBI (国立バイオテクノロジー情報センター) の E-utilities サービスを利用するための PHP スクリプトを作成しようとしています。

次のようなコードを使用して、URL に検索語 (この例では「alaS」) を指定し、問題なく XML 結果を取得できます。

<?php
$startUrl="http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=alaS&retmax=10000&usehistory=y";

$xml1=simplexml_load_file($startUrl) or die("Error: Cannot create object");

foreach ($xml1->IdList->children() as $child1)
   {
$newUrl1="http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=gene&db=protein&id=" . $child1;
echo $newUrl1 . "<br>";
   };
?>  

これは正常に動作します (結果はhttp://djcamenares.x10.m/testing/parse1.phpで確認できます)

ただし、結果のリンクを取得しようとして、スクリプトに結果を取得させようとすると、何も得られません。これは次のコードです。

<?php
$startUrl="http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=alaS&retmax=10000&usehistory=y";

$xml1=simplexml_load_file($startUrl) or die("Error: Cannot create object");
$geneIDa=array();

foreach ($xml1->IdList->children() as $child1)
   {
$newUrl1="http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=gene&db=protein&id=" . $child1;
array_push($geneIDa, $newUrl1);
   };

foreach ($geneIDa as $x1)
{
$xml2=simplexml_load_file($x1) or die("Error: Cannot create object");

echo $xml2->LinkSet->LinkSetDb[1]->Link->Id . "<br>";
};
?>  

これは、http://djcamenares.x10.mx/testing/parse3.phpで入手できます。

助言がありますか?プログラム全体を構築するより良い方法でしょうか?変数/結果をこのユーティリティ サーバーと 3 回やり取りする必要があります (遺伝子 ID を検索するために 1 回、次に各遺伝子 ID をタンパク質 ID にリンクし、最後にタンパク質配列を取得するため)。

あらゆる助けに感謝します。この質問が冗長であるか、すでに回答されている場合は申し訳ありません。私はPHPに比較的慣れていません。

4

0 に答える 0