我在循环浏览一些有参考文献的文本。其中一些是DOI编号,我需要将它们链接起来。
示例文本:
<div>Interesting article here: doi:10.1203/00006450-199305000-00005</div>
字符串
到目前为止我尝试过的:
$html = preg_replace("\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![\"&\'<>])[[:graph:]])+)\b", "<a href='https://doi.org/\\0' target='_new'>doi:\\0</a>",$html);
型
这将返回一个空字符串。
我期待:
<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:根据Katrin的以下回答更新DOI解析器。
3条答案
按热度按时间8ljdwjyq1#
CrossRef has a recommendation,他们在99.3%的DOI上成功测试:
字符串
此外,新推荐的解析器位于
https://doi.org/
。syqv5f0l2#
我改变了CrossRef recommendation pattern的推荐模式,然后在我的Laravel项目中使用这个函数:
字符串
希望能帮到你。
xa9qqrwz3#
使用Regular Expression Test Tool,我找到了一个适用于我的示例文本的expression:
字符串
高温高压