我从带有@提及标签的文本字符串中提取了两个输入的用户名。现在我想将它们放入 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);
您可以根据需要修改此代码。
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报
0/150
提交
取消