猿问

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

我从带有@提及标签的文本字符串中提取了两个输入的用户名。


现在我想将它们放入 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();


慕无忌1623718
浏览 82回答 1
1回答

汪汪一只猫

由于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);您可以根据需要修改此代码。
随时随地看视频慕课网APP
我要回答