0

コンテンツのデジタル オブジェクト識別子 (DOI) を送信することで、ユーザーがコンテンツに関するメタデータをデータベースに送信できるページを作成しています。次に、サイトは www.crossref.org でコンテンツのメタデータを検索し、データベースに追加する前にデータの概要を提示します。

ユーザーがDOIを入力するためのフォームを作成しました

<FORM ACTION="newref-getxml.php" METHOD=POST>
<P><strong>New Reference Form</strong><BR>
DOI: <INPUT NAME="send_doi"><BR>
<BR>
<INPUT TYPE=SUBMIT NAME="submitref" VALUE="SUBMIT">
</FORM>

そして、XML を取得して読み取るためのファイル (明らかな理由により、URL から API キーを削除しました)

<?php
  echo $_POST[send_doi]; // check post data is coming though
  $xml = simplexml_load_file("http://www.crossref.org/openurl/id=doi:'$_POST[send_doi]'&noredirect=true&pid=APIKEY&format=unixref");
?>
<p>
   Title: <?php echo $xml->doi_record->crossref->journal->journal_article->titles->title;?><br />
   Year: <?php echo $xml->doi_record->crossref->journal->journal_article->publication_date->year;?><br />
   Journal: <?php echo $xml->doi_record->crossref->journal->journal_metadata->full_title;?><br />
   DOI: <?php echo $xml->doi_record->crossref->journal->journal_article->doi_data->doi;?>
</p>

問題は、ユーザーが送信した DOI を URL に挿入することです。DOI を挿入する URL に貼り付けることができると思ってい'$_POST[send_doi]'ましたが、うまくいきません。

私が得るのは

10.3998/3336451.0009.101 タイトル: 年: ジャーナル: DOI:

DOI提出時

値を含める URL をどのように記述します'$_POST[send_doi]'か?

4

2 に答える 2

2
simplexml_load_file("http://www.crossref.org/openurl/id".
    "?doi=".urlencode($_POST[send_doi]).
    "&noredirect=true&pid=APIKEY&format=unixref");

URLに疑問符が表示されないため、疑問符を追加しました。より良い代替手段はhttp_build_query()です。見てみな!

simplexml_load_file('http://www.crossref.org/openurl/id?'. // <- Question Mark here
    http_build_query(array(
        'doi'       => $_POST[send_doi],
        'noredirect'    => 'true',
        'pid'       => 'APIKEY',
        'format'    => 'unixref',
    ))
);
于 2012-10-19T17:07:29.337 に答える