php正则表达式匹配@用户名

查看:274
本文介绍了php正则表达式匹配@用户名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

需求说明:
将@小明 你好,@小李 你也好中的小明,小李提取出来
规则为@用户名 +空格

解决方案

$users = [
    ['id' => 1, 'name' => '小明'],
    ['id' => 2, 'name' => '小李'],
];

$comment = '@小明 你好,@小李 你也好中的小明,小李提取出';


$comment = preg_replace_callback('/(@)(.+?)(\s)/', function ($matches) use ($users) {
    foreach ($users as $user) {
        if ($matches[2] === $user['name']) {
            return "<a href='/user/{$user['id']}'>@$matches[2]</a> ";
        }
    }
    return $matches[0];
}, $comment);

var_dump($comment);

// string(111) "<a href='/user/1'>@小明</a> 你好,<a href='/user/2'>@小李</a> 你也好中的小明,小李提取出"

满意吗?


问题描述里面那个叫用户名的家伙有点屌啊。

这篇关于php正则表达式匹配@用户名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆