Php 查找并替换文本中以特定字符开头的所有字符串

Php 查找并替换文本中以特定字符开头的所有字符串,php,Php,我试图允许用户链接到他们自己的墙贴中的其他墙贴。因此,例如,如果用户键入:请参阅post::35了解更多信息我会将字符串更改为:请参阅了解更多信息 我有下面的函数,它从内容中获取所有的帖子编号,如开头的::所示 function getBetween($content, $start, $end, $rest = array()) { $r = explode($start, $content, 2); if (isset($r[1])) { $r = explo

我试图允许用户链接到他们自己的墙贴中的其他墙贴。因此,例如,如果用户键入:请参阅post::35了解更多信息我会将字符串更改为:请参阅
了解更多信息

我有下面的函数,它从内容中获取所有的帖子编号,如开头的::所示

function getBetween($content, $start, $end, $rest = array()) {
    $r = explode($start, $content, 2);
    if (isset($r[1])) {
        $r = explode($end, $r[1], 2);
        $rest[] = $r[0];
        return getBetween($r[1], $start, $end, $rest);
    } else {
        return $rest;
    }
}

$post = 'Lorem ::35 ipsum ::36 dolor sit ::37 ::38';
$links = getBetween($post, '##', ' ');

$links返回一个包含35、36、37、38的数组。我不知道的是如何用超链接替换原始字符串中的超链接。

此代码将找到
:digit
,它的两侧有空格,或者显示在文本的开头或结尾

$post = 'Lorem ::35 ipsum ::36 dolor sit ::37 ::38';
$post = preg_replace('/(\G|\s+|^)::(\d+)((?=\s+)|(?=::)|$)/','$1 <a href="?postid=$2">$2</a> $3',$post);
echo $post;

// Lorem <a href="?postid=35">35</a> ipsum <a href="?postid=36">36</a> dolor sit <a href="?postid=37">37</a> <a href="?postid=38">38</a>
$post='Lorem::35 ipsum::36 dolor sit::37::38';
$post=preg|u replace('/(\G|\s+|^):(\d+)((?=\s+)|(?=:)|$)/','1$3',$post);
echo$post;
//同侧阴唇

如果您的帖子链接类似

您可以使用立即替换它,如

$result=preg_replace('/::(\d+/),'$1',$content)


@user2994560我在标记周围添加了一些额外的空格,以使像
::37::38
这样的情况看起来更干净