Advent of code 2015/5
Ajax Direct

Answer

Part 1 :
Part 2 :
// ==================================================
// > PART 1
// ==================================================
$solution_1 = $input->lines->filter(function ($line) {
    if ($line->chars()->keep(["a", "e", "i", "o", "u"])->count() < 3) return false;
    if (!preg_match("/([a-z])\\1/", $line, $matches)) return false;
    if (preg_match("/ab|cd|pq|xy/", $line)) return false;
    return true;
})->count();

// ==================================================
// > PART 2
// ==================================================
$solution_2 = $input->lines->filter(function ($line) {
    if (!preg_match("/([a-z]{2}).*\\1/", $line, $matches)) return false;
    if (!preg_match("/([a-z]).\\1/", $line, $matches)) return false;
    return true;
})->count();