Что-то вроде этого поможет, имея в виду, что слова, которые вы ищете, должны быть на расстоянии около 4 слов, по крайней мере, или они не будут соответствовать этому.Таким образом, вы можете настроить важность отношения между ключевыми словами
preg_match_all("~([\w]+[\s\- ,]+){0,3}watched([\s\- ,]+[\w]+){0,4}\ssofa([\s\- ,]+[\w]+){0,3}~i", $text, $matches);