扫码关注官方订阅号
需求说明:将“@小明 你好,@小李 你也好”中的小明,小李提取出来规则为@用户名 +空格
学习是最好的投资!
$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 if(preg_match_all('%@\w+%u', '@张全蛋 含泪质检@三星Note7 被炸飞,听说@炸机 跟@啤酒 更配哦!', $matches)) { var_export($matches); } //输出: array ( 0 => array ( 0 => '@张全蛋', 1 => '@三星Note7', 2 => '@炸机', 3 => '@啤酒', ), )
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
满意吗?
问题描述里面那个叫“用户名”的家伙有点屌啊。