Coincidencia para el caso exacto insensible frase exacta con espacios

Si tengo una cuerda"Hello I went to the store today" y tuve una serie de partidos

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

Debe coincidir con los dos. (La matriz puede ser bastante grande, así que preferiría hacerlo en 1 preg_match)

Edit: ¡Tengo a este trabajando! ¡Gracias!

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

También necesito una expresión regular separada que es un poco difícil de explicar. Di que tengo una matriz

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

¿Es posible obtener una expresión regular que coincida con una cadena si "cumpleaños" y "fiesta" y en cualquier parte de la cadena?

Entonces, ¿debería coincidir con "Hola, es mi cumpleaños y voy a tener una fiesta"? Pero con "helado" también en 1 preg_match?

Gracias

Editar: Ejemplo ...

Un usuario envía una descripción de un elemento y deseo comprobar si hay correo no deseado. Sé que la mayoría de las publicaciones de spam tienen frases como "cheques personales" o "trato especial", así que quiero obtener una lista de todas estas frases y verificarlas con la descripción. Si la descripción tiene alguna de las frases en mi lista, se marcará como spam. Este escenario se aplica a la primera expresión regular que quiero.

La segunda expresión regular sería si supiera que algunas publicaciones de spam tienen las palabras "perder" "peso" "rápido" en algún lugar allí, no tiene que estar en ningún orden, pero esas 3 palabras están en la descripción. Entonces, si obtengo una lista de estas frases "perder peso rápidamente", "se requiere tarjeta de crédito" y lo verifico con la descripción, puedo marcarlo como correo no deseado

Respuestas a la pregunta(1)

Su respuesta a la pregunta