/** * @brief Extract metadata from RIS format file * * @param ris RIS text * @param item Object we are populating * */ function parseRIS($ris, &$item) { $lines = split("\n", $ris); $item->comment = 'RIS'; /* echo "<pre>"; print_r($lines); echo "</pre>"; */ foreach ($lines as $k => $v) { if (preg_match('/^[A-Z]{1}([A-Z]|[0-9]) \\- /', $v)) { list($key, $value) = split(' - ', $v); // Clean $value = str_replace('\\r', '', $value); process_ris_key($key, $value, $item); } } }
function import_ris($ris, $callback_func = '') { global $debug; $volumes = array(); $rows = explode("\n", $ris); $state = 1; foreach ($rows as $r) { $parts = explode(" - ", $r); $key = ''; if (isset($parts[1])) { $key = trim($parts[0]); $value = trim($parts[1]); // clean up any leading and trailing spaces } if (isset($key) && $key == 'TY') { $state = 1; $obj = new stdClass(); $obj->authors = array(); if ('JOUR' == $value) { $obj->genre = 'article'; } } if (isset($key) && $key == 'ER') { $state = 0; // Cleaning... if ($debug) { print_r($obj); } if ($callback_func != '') { $callback_func($obj); } } if ($state == 1) { if (isset($value)) { process_ris_key($key, $value, $obj); } } } }
/** * @brief Import bibliograpohic data from a RIS file * */ function import_ris($ris) { global $debug; $rows = split("\n", $ris); if ($debug) { echo '<pre style="text-align: left;border: 1px solid #c7cfd5;background: #f1f5f9;padding:15px;">'; print_r($rows); echo "</pre>"; } $state = 1; $genre = ''; foreach ($rows as $r) { $parts = split(" - ", $r); $key = ''; if (isset($parts[1])) { $key = $parts[0]; $value = trim($parts[1]); // clean up any leading and trailing spaces } if (isset($key) && $key == 'TY') { $state = 1; $obj = new stdClass(); $obj->authors = array(); if ('JOUR' == $value) { $genre = 'article'; } } if (isset($key) && $key == 'ER') { $state = 0; if ($debug) { echo 'Line: ' . __LINE__ . "\n"; echo "\n=== Import this object ==\n"; } // ISSN lookup if (!isset($obj->issn) && 'article' == $genre) { $issn = issn_from_journal_title($obj->title); if ('' != $issn) { $obj->issn = $issn; } } // to do: we might want to do a DOI lookup here to get more GUIDs... if (!isset($obj->doi)) { if (in_crossref($obj->issn, $obj->year, $obj->volume)) { $item = new stdclass(); $doi = search_for_doi($obj->issn, $obj->volume, $obj->spage, 'article', $item); if ($doi != '') { $obj->doi = $doi; // Fix missing metadata if (!isset($obj->epage) && isset($item->epage)) { $obj->epage = $item->epage; } } } } // http://en.wikipedia.org/wiki/Chinese_name // For some journals (e.g., Chinese) we need to reverse the name parts returned // by parse_name //echo "boo1 |" . $obj->issn . "|\n"; switch ($obj->issn) { case '0529-1526': // Acta Phytotaxonomica Sinica for ($i = 0; $i < count($obj->authors); $i++) { $tmp = $obj->authors[$i]->forename; $obj->authors[$i]->forename = $obj->authors[$i]->lastname; $obj->authors[$i]->lastname = $tmp; } break; default: break; } // Cleaning... if ($debug) { echo '<pre style="text-align: left;border: 1px solid #c7cfd5;background: #f1f5f9;padding:15px;">'; print_r($obj); echo "</pre>"; } // Store reference here... if (find_in_cache($obj) == 0) { if (isset($obj->issn)) { if ($obj->issn != '') { store_in_cache($obj); } } /* for Pac Sci if (isset($obj->volume)) { if ($obj->volume != '') { store_in_cache($obj); } } */ } } if ($state == 1) { if (isset($value)) { process_ris_key($key, $value, $obj); } } } }