You may not know that [the most awesome validation engine for PHP][1] out there is [Respect/Validation][2], if you do, this is tailored for you! (I can do rimes, I expect you noted)
All rules on [Respect/Validation][2] are meant to be used togueter, composing a more complex validation rule that is closer to the domain of your application than the existing ones, let's try an example:
<?php
use Respect\Validation\Validator as v;