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)
{
$publisher= substr$isbn,1,2);
$unit= substr$isbn,3,6);
}
elseif$unknown>=2000 && $unknown<=6999)
{
$publisher= substr$isbn,1,3);
$unit= substr$isbn,4,5);
}
elseif$unknown>=7000 && $unknown<=8499)
{
$publisher= substr$isbn,1,4);
$unit= substr$isbn,5,4);
}
elseif$unknown>=8500 && $unknown<=8999)
{
$publisher= substr$isbn,1,5);
$unit= substr$isbn,6,3);
}
elseif$unknown>=9000 && $unknown<=9499)
{
$publisher= substr$isbn,1,6);
$unit= substr$isbn,7,2);
}
elseif$unknown>=9500)
{
$publisher= substr$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)
{
$publisher= substr$isbn,1,2);
$unit= substr$isbn,3,6);
}
elseif$unknown>=1000 && $unknown<=3999)
{
$publisher= substr$isbn,1,3);
$unit= substr$isbn,4,5);
}
elseif$unknown>=4000 && $unknown<=5499)
{
$publisher= substr$isbn,1,4);
$unit= substr$isbn,5,4);
}
elseif$unknown>=5500 && $unknown<=8697)
{
$publisher= substr$isbn,1,5);
$unit= substr$isbn,6,3);
}
elseif$unknown>=8698 && $unknown<=9989)
{
$publisher= substr$isbn,1,6);
$unit= substr$isbn,7,2);
}
elseif$unknown>=9990)
{
$publisher= substr$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];
}
}