Lukas Renggli's excellent PetitParser ported to PHP