foreach ( $array as $k=>$v )
{
if (stripos($v,'куплю',0) !== false || stripos($v,'продам',0) !== false) {...}
};
$source = [...];
$words = ['куплю', 'продам'];
$result = array_filter($source, function($item) use ($words) {
return count(array_filter($words, function($word) use ($item) {
return mb_stripos($item, $word) !== false;
}));
});