ZipCodeFixer.php 878 Bytes
<?php
/**
 * @copyright  Vertex. All rights reserved.  https://www.vertexinc.com/
 * @author     Mediotype                     https://www.mediotype.com/
 */

namespace Vertex\Tax\Model;

/**
 * Fixer class for fixing user errors related to postal codes
 *
 * 4 digit zipcodes to 5 digit zipcodes prefixed with a 0
 */
class ZipCodeFixer
{
    /**
     * Corrects erroneously entered US ZIP or ZIP+4 codes where 0s have been omitted from the beginning
     *
     * @param string $postcode A US ZIP or ZIP+4 postcode
     * @return string Same ZIP code prepended with 0's if length of first part is less than 5
     */
    public function fix($postcode)
    {
        if ($postcode === null) {
            return null;
        }
        $parts = explode('-', $postcode);
        $parts[0] = str_pad($parts[0], 5, '0', STR_PAD_LEFT);
        return implode('-', $parts);
    }
}