- preg_match: documentation ( source)
<?php
$pswd = "A@pa2Q";
$letterStart = preg_match("/^[A-Za-z]/", $pswd); // start with a letter
$specialChar= preg_match("/(?=.*[!@#&*%]+)/", $pswd); // one or more special chars in list
$numberChar= preg_match("/(?=.*[0-9].*[0-9])/", $pswd); //two or more digits
$upperChar= preg_match("/(?=.*[A-Z].*[A-Z])/", $pswd); //two or more upper case letters x
$lowerChar= preg_match("/(?=.*[a-z].*[a-z])/", $pswd); //two or more lower case letters x
$pswdLength = preg_match("/(?=^.{6,20}$)/", $pswd); //length of pswd between min and max
echo $letterStart . " " . $specialChar . " " . $numberChar . " " . $upperChar . " " . $lowerChar . " " . $pswdLength;