This function lets you set the minimum requirements by counting occurrences using the count parameter in preg_replace:
function password_validate($password, $min_length=8, $min_lowercases=1, $min_uppercases=1, $min_numbers=1, $min_specials=0) {
preg_replace('#[a-z]#', '', $password, -1, $lowercases);
preg_replace('#[A-Z]#', '', $password, -1, $uppercases);
preg_replace('#[0-9]#', '', $password, -1, $numbers);
preg_replace('#[^\w]#', '', $password, -1, $specials);
return (mb_strlen($password) >= $min_length && $lowercases >= $min_lowercases && $uppercases >= $min_uppercases && $numbers >= $min_numbers && $specials >= $min_specials);
}
It can be used like this:
if (!password_validate($new_password)) {
echo 'Password did not meet requirements';
}
Or passing the requirements:
if (!password_validate($new_password, 6, 1, 0, 0, 0)) {
echo 'Password did not meet requirements';
}