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];
  }