【发布时间】:2021-12-20 11:54:56
【问题描述】:
假设以下字符串:
@twitter @handles @hello
使用下面的代码,我可以替换字符串并生成链接
preg_replace(
'/(?:^|[^>])(@' . $data->entities->user_mentions[$i]->screen_name . ')/',
'<a href="https://twitter.com/' . $data->entities->user_mentions[$i]->screen_name . '">@' . $data->entities->user_mentions[$i]->screen_name . '</a>',
$data->text
);
但上面的代码替换了第 0 组,而不是第 1 组。
Stack Overflow 上的很多问题都显示了如何将组 0 替换为组 1,但不是相反。
我的代码不是很清楚,所以让我来说明问题:
第 1 组如下所示:
@twitter
@handles
@hello
但是第 0 组看起来像这样:
@twitter
@handles
@hello
它匹配空格,我不想要那个。
【问题讨论】:
-
不完全清楚 PHP 值是什么,但你能重置偏移量吗?
/(?:^|[^>])\K@' . $data->entities->user_mentions[$i]->screen_name . '/我认为这会让0成为你想要的。 -
@user3783243 我编辑了我的问题
-
在这种情况下你可以只附加可选的空格吗?
\h*群前 -
@user3783243 可以。但后来我需要
trim()输出。我真的很想知道你是否可以替换第 1 组。