为什么Pubmed从PHP脚本生成的结果与手动搜索不同?

时间:2011-04-02 06:28:34

标签: php xml search bioinformatics

我编写了一个PHP脚本,可以根据用户输入自动搜索NCBI Pubmed数据库。这是一个非常大的剧本,我不打算把它全部放在这里。但是我无法弄清楚的一个问题是,当我使用esearch(其中一个eutils)搜索Pubmed时,如果使用PHP脚本完成它,那么我得到的结果不同于它的结果。手动完成?

让我举个例子。您可以手动将其输入浏览器窗口:http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=cancer+AND+Nature[jour]&retmode=xml

您将看到它生成一个XML文件,其中Count字段(点击次数)为5986.

但是如果我使用以下PHP脚本:

<?php
$test = simplexml_load_file('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=cancer+AND+Nature[jour]&retmode=xml');
echo $test->Count;
?>

它返回值0.每当修改搜索词以包含附加字段或非标准字段包含多个搜索词时,似乎就会发生这种情况。在这种情况下,它是&#34;癌症&#34;提出但仅限于期刊&#34; Nature&#34;,第二个领域的出版物。如果我修改搜索词以便查找癌症和DNA(&#39; http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db = pubmed&amp; term = cancer + AND + DNA&amp; retmode = xml&#39;),在同一个字段中有两个不同的搜索词,它在脚本中运行良好。

如果我在一个非标准字段内搜索:(&#39; http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db = pubmed&amp; term = Nature [jour ]&amp; retmode = xml&#39;)它工作正常 - 但是如果我然后修改它以在日志字段中包含两个术语(&#39; http://eutils.ncbi.nlm.nih.gov/entrez/eutils /esearch.fcgi?db=pubmed&term=Science[jour]+OR+Nature[jour]&retmode=xml')手动和PHP生成的返回之间的差异。

有谁知道为什么会这样?

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:3)

这有效:

<?php

$result = file_get_contents('http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=cancer+AND+Nature[jour]&retmode=xml');
$xml = simplexml_load_string($result);
echo $xml->Count; // = 5986

?>