tu expresión sigue esta estando mal... ya que debes usar paréntesis para agrupar distintas opciones, y tu estas utilizando corchetes...
Código PHP:
$foo = explode(' ', 'candy bar ^^ does nothing');
$foo = join('|', array_map('preg_quote', $foo));
// (candy|bar|\^\^|does|nothing)
$expr = "/($foo)/";