dtu15253 2018-01-18 11:20
浏览 23
已采纳

正则表达式从PHP中的字符串中获取所有@提到的用户数据

I have below string. This string having data (@[ID:username__FULLNAME]) of three users mentioned. I want to extract them. I have tried below code but not getting desired results.

ID is integer type
username and FULLNAME may contain numbers, letter and all kind of special chars.


$t = 'Hi @[4232:mark__MΛRK ATTLEY] how are you ? 
    Hi @[4232:ryan__RYΛN вυηту] how are you ? 
    Hi @[4232:david__DΛVID शाहिद ] how are you ? 
    ';

My PHP CODE:

$pattern = "|(?:(@\[[0-9]+:[\s\S(?!\])]+\]*))|";
preg_match_all($pattern, $string, $mentionList, PREG_PATTERN_ORDER);
print_r($mentionList);

Current Result:

Array
(
    [0] => Array
        (
            [0] => @[4232:mark__MΛRK ATTLEY] how are you ? 
    Hi @[4232:ryan__RYΛN вυηту] how are you ? 
    Hi @[4232:david__DΛVID शाहिद] how are you ? 

        )

    [1] => Array
        (
            [0] => @[4232:mark__MΛRK ATTLEY] how are you ? 
    Hi @[4232:ryan__RYΛN вυηту] how are you ? 
    Hi @[4232:david__DΛVID शाहिद] how are you ? 

        )

)

Expected Result:

Array
(
    [0] => Array
        (
            [0] => @[4232:mark__MΛRK ATTLEY]
            [1] => @[4232:ryan__RYΛN вυηту]
            [2] => @[4232:david__DΛVID शाहिद ]
        )

)

Can someone help me getting the desired results?

Thanks.

  • 写回答

3条回答 默认 最新

  • dongshen9058 2018-01-18 11:27
    关注

    You can use the following regex: @\[.+\] (demo) that gets you all you have in [] plus the front @.

    Check this working php demo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集