为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
拉莫斯之舞 2022-06-17 10:10:42
我有一个输入字段,其中用户名标签如@abd123,@abc1和一些主题标签如#CurrentNews,#NewLife在同一输入字段上。在这里,我的工作是捕获所有以 @ 和 # 开头的标记名称,并放在单独的数组中以查看它们的数据库表。所以这对我来说非常复杂。所以请告诉我最简单的解决方案。这是在我为此使用explode()方法之前。但这不是一个好主意。我从请求中得到的价值$allTags =  @abc1,@abvc321, #NewAge , #CurrentNews它应该是在处理之后。$userTag = ["@abc1","@abvc321"];$topicTag = ["#NewAge ","#CurrentNews"];
查看完整描述

2 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

调整从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

)


查看完整回答
反对 回复 2022-06-17
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

亲爱的Nigel Ren,我对您的解决方案几乎没有改动。因为$userTag是对象格式。所以它的数据类型会改变。这不会影响foreach。但我尝试将两者都制成数组格式。


    $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"

 ]

]


查看完整回答
反对 回复 2022-06-17
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信