- var_dump: documentation ( source)
- preg_match_all: documentation ( source)
<?php
// SHOULD PASS. Passes all 5.0.5 and thereafter.
$passwordTestArray[] = 'Aa';
// SHOULD PASS. Passes all 5.0.5 and thereafter.
$passwordTestArray[] = 'Æa';
// SHOULD PASS. Fails after 5.2.10. Passes 5.0.5 - 5.2.9
$passwordTestArray[] = 'Aæ';
// SHOULD PASS. Fails after 5.2.10. Passes 5.0.5 - 5.2.9
$passwordTestArray[] = 'Ææ';
// SHOULD FAIL because ß does not have an uppercase equiv. But it passses anyway in 5.0.5 - 5.2.9
$passwordTestArray[] = 'Aß';
// SHOULD FAIL because there is no uppercase ß.
// It fails for the wrong reasons in 5.0.5 - 5.2.9
// It passes in 5.2.10 and beyond.
$passwordTestArray[] = 'aß';
class PCREFail
{
static public function verifyComplexity($plainTextPassword)
{
$re = "/(?=.*[\\p{Ll}])(?=.*[\\p{Lu}]).{2,}/";
$found = preg_match_all($re, $plainTextPassword, $matches);
if ($found) {
return $matches;
}
return $found;
}
}
foreach ($passwordTestArray as $passwordToTest) {
var_dump(PCREFail::verifyComplexity($passwordToTest));
}