Correspondência para frase exata insensível a maiúsculas e minúsculas com espaços

Se eu tiver uma string"Hello I went to the store today" e eu tive uma série de jogos

$perfectMatches = array("i went","store today");

Deve corresponder a ambos. (o array pode ficar muito grande, então prefiro fazer em 1 preg_match)

Edit: Tem este trabalhando! obrigado!

preg_match_all("/\b(" . implode($perfectMatches,"|") . ")\b/i", $string, $match1)

Eu também preciso de uma expressão regular separada que seja difícil de explicar. Digamos que eu tenha uma matriz

$array = array("birthday party","ice cream");//this can be very long

É possível obter uma expressão regular que corresponderá a uma string se "aniversário" e "festa" e em qualquer lugar da string?

Então deve corresponder "Oi, é meu aniversário e eu vou fazer uma festa"? Mas com "sorvete" também em 1 preg_match?

obrigado

Editar: exemplo ...

Um usuário envia uma descrição de um item e eu quero verificar se há spam. Eu sei que a maioria dos posts de spam tem frases como "cheques pessoais" ou "hot deal", então eu quero obter uma lista de todas essas frases e verificar com a descrição. Se a descrição tiver qualquer uma das frases da minha lista, ela será marcada como spam. Este cenário se aplica à primeira expressão regular desejada.

A segunda expressão regular seria se eu soubesse que alguns posts de spam têm as palavras "perder" "peso" "rápido" em algum lugar lá, não precisa estar em nenhuma ordem, mas essas três palavras estão na descrição. Então, se eu conseguir uma lista dessas frases "perder peso rápido", "cartão de crédito necessário" e verifique com a descrição, eu posso marcá-lo como spam

questionAnswers(1)

yourAnswerToTheQuestion