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に比較的慣れていません。