이 함수가 어떻게 작동하는지 알고 싶습니다. ColdFusion에서이 함수를 다시 작성할 수 있습니다. 나는 PHP로 프로그래밍 한 적이 없다. 나는을 생각하고 함수는 $ string이 길이가 11 인 경우 함수를 검사한다.이 간단한 PHP 함수를 이해해 주시겠습니까?
- 하지만 어떻게 처리하고 있습니까?
- 간단한 len() 함수 대신 루프를 사용하는 이유는 무엇입니까?
나는 str_pad()에 대해 읽고 이해했다. 그러나 세 번째 인수로 루프 반복 함수 $i
은 무엇입니까? 뭐하는거야?
if($this->check_fake($cpf, 11)) return FALSE;
function check_fake($string, $length)
{
for($i = 0; $i <= 9; $i++) {
$fake = str_pad("", $length, $i);
if($string === $fake) return(1);
}
}
이 기능은 미국의 SSN #과 동일한 브라질의 CPF를 확인하기위한 것입니다. CPF는 11 자입니다. 기본적으로 Coldfusion에서 함수를 작성할 수 있도록 함수가 무엇을하는지 알아야합니다.
단지 길이라면 if (len(cpf) != 11) return false;
이 될 수 없습니까? 당신을 관심을 끄는 경우 여기
<?
/*
*@ Class VALIDATE - It validates Brazilian CPF/CNPJ numbers
*@ Developer: André Luis Cupini - [email protected]
************************************************************/
class VALIDATE
{
/*
*@ Remove ".", "-", "/" of the string
*****************************************************/
function cleaner($string)
{
return $string = str_replace("/", "", str_replace("-", "", str_replace(".", "", $string)));
}
/*
*@ Check if the number is fake
*****************************************************/
function check_fake($string, $length)
{
for($i = 0; $i <= 9; $i++) {
$fake = str_pad("", $length, $i);
if($string === $fake) return(1);
}
}
/*
*@ Validates CPF
*****************************************************/
function cpf($cpf)
{
$cpf = $this->cleaner($cpf);
$cpf = trim($cpf);
if(empty($cpf) || strlen($cpf) != 11) return FALSE;
else {
if($this->check_fake($cpf, 11)) return FALSE;
else {
$sub_cpf = substr($cpf, 0, 9);
for($i =0; $i <=9; $i++) {
$dv += ($sub_cpf[$i] * (10-$i));
}
if ($dv == 0) return FALSE;
$dv = 11 - ($dv % 11);
if($dv > 9) $dv = 0;
if($cpf[9] != $dv) return FALSE;
$dv *= 2;
for($i = 0; $i <=9; $i++) {
$dv += ($sub_cpf[$i] * (11-$i));
}
$dv = 11 - ($dv % 11);
if($dv > 9) $dv = 0;
if($cpf[10] != $dv) return FALSE;
return TRUE;
}
}
}
}
?>
약간의 주제는 아니지만 유효성 검사 의사 코드가있는 [CPF] (http://en.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas)에 대한 위키 백과 문서가 있습니다. 매우 유혹받을 것입니다. 위의 PHP 코드보다는이 코드를 사용하십시오. –
제어 숫자를 계산하고 검사하는 알고리즘을 구현하는 것이 더 좋지 않습니까? 사람들은 12345678901과 같은 것을 시도 할 수 있습니다. 이는 알고리즘에 따라 완전히 맞을 것입니다. 예를 들어 Wikipedia를 확인하십시오. http://en.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas –
@middaparka와 @Emil Vikstrom은 정확히 코드를 수행하는 주요 기능이 아닙니까? – Mohamad