eXorithm – Execute Algorithm: View / Run Algorithm isbn_hyphenate

Logo Beta

function isbn_hyphenate ($isbn

{

  $isbnpreg_replace'/[^dX]/'''$isbn);  //remove all non-numeric chars

  

  // strip prefix from ISBN13

  if (strlen$isbn)==13) {

    $prefix = substr$isbn,0,3).'-'

    $isbn = substr$isbn,3);

  } else if (strlen$isbn)==10) {

    $prefix = ''

  } else {

    return ''

  }

  

  $unknown = substr$isbn,1,4)+0;

  $publisher = ''

  $unit = ''

  

  if (($isbn[0] == '0') || ($isbn[0] == '3') || ($isbn[0] == '4'))

  // english region 0

  // german region 3

  // japan region 4

  {

    if$unknown<=1999)

    {

      $publishersubstr$isbn,1,2);

      $unitsubstr$isbn,3,6);

    }

    elseif$unknown>=2000 && $unknown<=6999)

    {

      $publishersubstr$isbn,1,3);

      $unitsubstr$isbn,4,5);

    }

    elseif$unknown>=7000 && $unknown<=8499)

    {

      $publishersubstr$isbn,1,4);

      $unitsubstr$isbn,5,4);

    }

    elseif$unknown>=8500 && $unknown<=8999)

    {

      $publishersubstr$isbn,1,5);

      $unitsubstr$isbn,6,3);

    }

    elseif$unknown>=9000 && $unknown<=9499)

    {

      $publishersubstr$isbn,1,6);

      $unitsubstr$isbn,7,2);

    }

    elseif$unknown>=9500)

    {

      $publishersubstr$isbn,1,7);

      $unit$isbn[8];

    }

    return $prefix$isbn[0]."-"$publisher"-"$unit"-"$isbn[9];

  }

  else if ($isbn[0] == '1'

  // english region 1

  {

    if$unknown<=999)

    {

      $publishersubstr$isbn,1,2);

      $unitsubstr$isbn,3,6);

    }

    elseif$unknown>=1000 && $unknown<=3999)

    {

      $publishersubstr$isbn,1,3);

      $unitsubstr$isbn,4,5);

    }

    elseif$unknown>=4000 && $unknown<=5499)

    {

      $publishersubstr$isbn,1,4);

      $unitsubstr$isbn,5,4);

    }

    elseif$unknown>=5500 && $unknown<=8697)

    {

      $publishersubstr$isbn,1,5);

      $unitsubstr$isbn,6,3);

    }

    elseif$unknown>=8698 && $unknown<=9989)

    {

      $publishersubstr$isbn,1,6);

      $unitsubstr$isbn,7,2);

    }

    elseif$unknown>=9990)

    {

      $publishersubstr$isbn,1,7);

      $unit$isbn[8];

    }

    return $prefix$isbn[0]."-"$publisher"-"$unit"-"$isbn[9];

  }

  else

  // other regions are not fully supported

  {

    return $prefixsubstr$isbn,0,9)."-"$isbn[9];

  }