Cleaning up validator class
Good work formatting and approaching styles in a fashionable method, it makes reading your code very easy! a couple things to note:


It's common to see private variables prefixed with an underscore to improve readability. It's up to you if you want to implement this, and if you use a framework, check their docs to see if it's standard.
Regarding your last method, dump(): the name dump could mean many things. Without seeing the source, what's it dumping? It'd be fine to leave it as is, but you may consider renaming to dumpRules() or something of that sort.
I'm not sure if you left it out, or you just haven't, but it's also a good practice to document your code. That means add comments. Googling PHPDoc will give you a good start, and if your familiar with JavaDocs, that's what I'm talking about.




Be careful making new array's with just = [].


  As of PHP 5.4 you can also use the short array syntax, which replaces
  array() with [].


That's from the docs. So if anyone using below 5.4 wants your code, they could experience some turbulence setting it up.



The one comment you do have, is started with #. I believe this style of comments are deprecated and the C style comments (/*...*/, //) are favorable. I'll try and find a reference to this claim.



I noticed you have

foreach ($this-&gt;rules[$rulename]['rules'] as $rule) {
    try {
        $rule-&gt;check($input);
    } catch (Exception $e) {
        $this-&gt;errors[$rulename][] = $e-&gt;getMessage();
    }
}


a couple times. You could put this in a function (with appropriate parameters) and simply call the function to reduce multiplicities.



Other than that, all looks well. Just in case you wanted to look at some other validation classes (if you haven't already), here's one to get you started.