2

文献の参照が埋め込まれたテキストをループしています。これらのいくつかは 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>

どこが間違っていますか?

edit 2018-01-30 : 以下の Katrin の回答に従って DOI リゾルバーを更新しました。

4

2 に答える 2

0

正規表現テスト ツールを使用して、サンプル テキストに適したを見つけました。

$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);

h番目

于 2013-02-13T20:27:35.037 に答える