• PHP Validate UPC and EAN13 Barcodes

    As I couldn't find any routines to do this...

    I hacked these up in Perl an age ago... needed PHP versions so here they are (Ask if you want the Perl versions lazy..)


    function validate_UPCABarcode($barcode)
    {
    // check to see if barcode is 12 digits long
    if(!preg_match("/^[0-9]{12}$/",$barcode)) {
    return false;
    }
    $digits = $barcode;
    // 1. sum each of the odd numbered digits
    $odd_sum = $digits[0] + $digits[2] + $digits[4] + $digits[6] + $digits[8] + $digits[10];
    // 2. multiply result by three
    $odd_sum_three = $odd_sum * 3;
    // 3. add the result to the sum of each of the even numbered digits
    $even_sum = $digits[1] + $digits[3] + $digits[5] + $digits[7] + $digits[9];
    $total_sum = $odd_sum_three + $even_sum;
    // 4. subtract the result from the next highest power of 10
    $next_ten = (ceil($total_sum/10))*10;
    $check_digit = $next_ten - $total_sum;

    // if the check digit and the last digit of the barcode are OK return true;
    if($check_digit == $digits[11]) {
    return true;
    }
    return false;
    }

    function validate_EAN13Barcode($barcode)
    {
    // check to see if barcode is 13 digits long
    if(!preg_match("/^[0-9]{13}$/",$barcode)) {
    return false;
    }

    $digits = $barcode;

    // 1. Add the values of the digits in the even-numbered positions: 2, 4, 6, etc.
    $even_sum = $digits[1] + $digits[3] + $digits[5] + $digits[7] + $digits[9] + $digits[11];
    // 2. Multiply this result by 3.
    $even_sum_three = $even_sum * 3;
    // 3. Add the values of the digits in the odd-numbered positions: 1, 3, 5, etc.
    $odd_sum = $digits[0] + $digits[2] + $digits[4] + $digits[6] + $digits[8] + $digits[10];
    // 4. Sum the results of steps 2 and 3.
    $total_sum = $even_sum_three + $odd_sum;
    // 5. The check character is the smallest number which, when added to the result in step 4, produces a multiple of 10.
    $next_ten = (ceil($total_sum/10))*10;
    $check_digit = $next_ten - $total_sum;

    // if the check digit and the last digit of the barcode are OK return true;
    if($check_digit == $digits[12]) {
    return true;
    }

    return false;
    }

  • Fairwell trusted companion

    After 10 years working together...

    ... it's time to say bye bye to BBedit and hello to TextMate.

    TextMate isn't as mature as BBedit, but then it's not as bloated either. I found BBedit increasingly clunky of late and TextMate answers a lot of those issuses, and has some neat extra features. Check it out if you do a lot of coding on OS X.

  • Dorian Moore

    The last resting place of the thoughts of Dorian Moore, design influenced digital media and arts technologist, consultant, programmer, sysadmin, music lover, amateur photographer, and tall geek.

  • Elsewhere In Between

    Mixing Narrative

    Elsewhere In Between is a project developed by Julie Myers which I helped her in the latter stages of, building a primitive video sequencer in Flash that uses a database of video clips to allow the user to make their own journey through the eyes of five film-makers in five countries.

    The composer was originally developed by Julie in conjunction with BT's R&D facility with the intention of making an interactive DVD. At a late stage in the project it became apparent that a DVD would not be able to do what was desired.

    This interface was built over 4 days to be given out on DVD to delegates to a conference organised by FACT, and used in a kiosk installations as well. Because it was built in Flash it was relatively trivial to create lower bandwidth video clips that could be played over the internet.

  • It's about time for...

    the anual reworking of SHOWstudio (god damn this CMS is getting complex)

    After half a year of planning, designing, coding, arguing and generally putting our all into it SHOWstudio, with my help, have just launched a new version of their website. Lots of development on the existing CMS I built, lots of ideas from elsewhere (and in between) implemented, and a lot more to come...

  • Grizedale Arts.

    First Phase is Go.

    I've been working on this one for a while - my appologies to Grizedale, but it's now live in it's first phase, and will be ramping up soon.

    www.grizedale.org