如何从拉拉维尔的字符串中提取所有 #Tags 和用户标签?



>我有一个输入字段其中用户名Tage喜欢@abd123,@abc1,一些主题标签像#CurrentNews,#NewLife在同一个输入字段上。

在这里,我的工作是捕获所有以@和#开头的标记名称,并放在单独的数组上以查看其数据库表。 所以这对我来说非常复杂。所以请告诉我最简单的解决方案。

这是在我为此使用explode((方法之前。 但这不是一个好主意。

我从请求中获得的价值

$allTags =  @abc1,@abvc321, #NewAge , #CurrentNews

它应该在处理之后。

$userTag = ["@abc1","@abvc321"];
$topicTag = ["#NewAge ","#CurrentNews"];

从 PHP 中的字符串中提取 Twitter 主题标签来调整答案以捕获用户标签,这在同一正则表达式中使用两者来生成 2 个列表。 过滤器(array_filter()(用于整理数组(当一个包含用户标签时,另一个将为空(...

$string = '@abc1 xxx,@abvc321, #NewAge , #CurrentNews';
preg_match_all("/(#\w+)|(@\w+)/", $string, $matches);
$topicTag = array_filter($matches[1]);
$userTag = array_filter($matches[2]);
print_r($userTag);
print_r($topicTag);

给。。。

Array
(
[0] => @abc1
[1] => @abvc321
)
Array
(
[2] => #NewAge
[3] => #CurrentNews
)

亲爱的奈杰尔·任我对你的解决方案几乎没有什么变化。 因为$userTag是对象格式的。 所以它的数据类型会发生变化。 这不会影响福瑞克。 但我尝试将两者都制成数组格式。

$string = $req->user_tags;
preg_match_all("/(#\w+)|(@\w+)/", $string, $matches);
$topicTag = array_values(array_filter($matches[1]));
$userTag = array_values(array_filter($matches[2]));

在此之后,我的结果

[
[
"@pankaj",
"@pawan"
],
[
"#tag",
"#tag2",
"#tage3"
]
]

最新更新