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

从 foreach 的一行字符串中提取值

从 foreach 的一行字符串中提取值

PHP
慕无忌1623718 2023-09-15 18:23:12
我从带有@提及标签的文本字符串中提取了两个输入的用户名。现在我想将它们放入 foreach 循环中,以便我可以使用我的学说实例来搜索他们的用户名。我的代码:function find(TextEntity $text){    preg_match_all('/@([a-zA-Z0-9]+)/', $text->getText(), $usernames);    $extractedText = implode('", "', $usernames[1]);}我得到的结果:“约翰”、“简”我找不到提取它们的方法,因此我可以在 foreach 循环中一一使用。所以我的尝试是:(更新: 工作解决方案)$usernames = $usernames[1];$query = $this->em->getRepository(User::class)        ->createQueryBuilder('m')        ->select('m')        ->where('m.email IN (:emails)')        ->setParameter('emails', $usernames)        ->getQuery()        ->getResult();
查看完整描述

1 回答

?
汪汪一只猫

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

由于usernames[1]它已经是一个数组,您可以对其进行迭代:


preg_match_all('/@([a-zA-Z0-9]+)/', $text->getText(), $usernames);


$usernames = $usernames[1];

并且由于学说支持where in ()子句,findBy您可以使用此数组而无需foreach:


$findUsers = $this->em->getRepository(User::class)->findBy([

    'username' => $usernames

]);


print_r(findUsers);

您可以根据需要修改此代码。


查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

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