close
10碼的ISBN,將第一個數字開始,乘以10,第二個數字乘以9,
以此類推乘到1,加起來總和,如果mod 11後為0,就是正確的,
13碼的ISBN,從第一個數字開始,乘以1,第二個數字乘以3,以此
類推,乘到第12個數字後,總和加上第13個數字,如果可以被10
mod,該ISBN則是正確的.


function ISBN_TEST($ISBN)    

 $ISBN=explode("-",$ISBN);
 $ISBN=implode("",$ISBN);   
    if(strlen($ISBN) == 10 )
 {
    $sum = 0 ;
    for($index=0 ; $index < strlen($ISBN) ; $index++)
      {
       $char = substr($ISBN,$index,1);
       if($char == 'x'|| $char == 'X')
         {
          $char = 10;
         }
        $sum +=  $char * (10-$index);
      }
     if( ($sum % 11)!= 0 ){
          return false;
     }else{
          return true;
         }
 }
 elseif(strlen($ISBN==13))
 {
  for($index=0 ; $index < strlen($ISBN)-1 ; $index++)
      {
       $char = substr($ISBN,$index,1);
       if($index%2==0)
    {
    $sum=$sum +$char;
    }
    elseif($index%2!=0)
    {
    $sum=$sum +$char*3;
    }   
      }
   $sum=$sum+substr($ISBN,12,1);
       if( ($sum % 10)!= 0 ){
          return false;
     }else{
          return true;
     }
 }
 else
 {
 return false;
 }
}
arrow
arrow
    全站熱搜

    via2k6 發表在 痞客邦 留言(0) 人氣()