使用 Php 将 Two/Three 个词替换为一个锚标记

Replace Two/Three words with one anchor tag using Php

我有:

<p>
#mango #orange Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>

我想用single:

替换#values,即:#mango, #orange
<a href="#">Link</a>

所以我的预期是:

<p>
<a href="#">Link</a>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>

我试过了:

<?php 
if( $sentence != '' ) {
    $sentence=preg_replace("/#([A-Za-z0-9\_\-\.]*)/", "<a href='#'>Link</a>", $sentence);
    }
?>

但它用两个锚标记替换了#mango 和#orange:LinkLink相反,我想用一个锚标记替换所有 # 个单词。

我想这个正则表达式就是你要找的:

$sentence = <<<TAG
<p>
#mango #orange Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</p>
TAG;

$sentence = preg_replace("/(#([\w\-.]*)+ )+/", "<a href='#'>Link</a> ", $sentence);

echo $sentence;

一个主要的变化是我之后也在寻找一个space,所以它需要被添加回替换部分。

此处演示:https://3v4l.org/qKEAq