$re = '~( # outer group
\b(floor|roof) # floor or roof
(?:\W+\w+){1,6}\s* # any six "words"
)
\btiles?\b # tile or tiles~x';
$str = 'After the storm the roof was damaged and some of the tiles are missing
I dropped the saw and it fell on the floor and damaged some of the tiles
the roof was leaking and when I checked I saw that some of the tiles were cracked';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php