首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用preg_replace链接DOI

用preg_replace链接DOI
EN

Stack Overflow用户
提问于 2013-02-13 19:54:59
回答 2查看 239关注 0票数 2

我正在循环一些带有嵌入文献参考的文本。其中一些是DOI数字,我需要把它们联系起来。

示例案文:

代码语言:javascript
复制
<div>Interesting article here:  doi:10.1203/00006450-199305000-00005</div>

到目前为止我尝试过的是:

代码语言:javascript
复制
$html = preg_replace("\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![\"&\'<>])[[:graph:]])+)\b", "<a href='https://doi.org/\\0' target='_new'>doi:\\0</a>",$html);

这将返回一个空字符串。

我期待着:

代码语言:javascript
复制
<div>Interesting article here:  <a href='https://doi.org/10.1203/00006450-199305000-00005' target='_new'>doi:10.1203/00006450-199305000-00005</a></div>

我哪里出问题了?

编辑2018-01-30:更新的DOI解析器根据卡特林的答案如下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-13 20:27:35

使用正则表达式测试工具,我找到了一个适用于示例文本的表达式

代码语言:javascript
复制
$pattern        = '(10[.][0-9]{4,}[^\s"/<>]*/[^\s"<>]+)';
$replacement    = "<a href='http://dx.doi.org/$0' target='1'>doi:$0</a>";
$html = preg_replace($pattern, $replacement, $html);

hth

票数 0
EN

Stack Overflow用户

发布于 2018-01-30 14:47:58

CrossRef有一个建议,他们成功地测试了99.3%的DOIs:

代码语言:javascript
复制
/^10.\d{4,9}/[-._;()/:A-Z0-9]+$/i

还有,https://doi.org/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14861893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档