rendered paste bodyPHP_FUNCTION(cnpj)
{
char *cnpj = NULL;
int argc = ZEND_NUM_ARGS(), cnpj_len;
int cnpjnumero[14];
int sum = 0, i = 0;
int rrpd = 0, rrsd = 0, pdv = 0, sdv = 0;
if (zend_parse_parameters(argc TSRMLS_CC, "s", &cnpj, &cnpj_len) == FAILURE)
return;
for(i = 0; i < 12; i++)
{
cnpjnumero[i] = (int) cnpj[i] - 48;
}
sum = 5*cnpjnumero[0] + 4*cnpjnumero[1] + 3*cnpjnumero[2] + 2*cnpjnumero[3] + 9*cnpjnumero[4] + 8*cnpjnumero[5]
+ 7*cnpjnumero[6] + 6*cnpjnumero[7] + 5*cnpjnumero[8] + 4*cnpjnumero[9] + 3*cnpjnumero[10] + 2*cnpjnumero[11];
rrpd = sum % 11;
pdv = rrpd < 2 ? 0 : 11 - rrpd ;
sum = 0;
cnpjnumero[12] = pdv;
sum = 6*cnpjnumero[0] + 5*cnpjnumero[1] + 4*cnpjnumero[2] + 3*cnpjnumero[3] + 2*cnpjnumero[4] + 9*cnpjnumero[5]
+ 8*cnpjnumero[6] + 7*cnpjnumero[7] +6*cnpjnumero[8] + 5*cnpjnumero[9] + 4*cnpjnumero[10]
+ 3*cnpjnumero[11] + 2*cnpjnumero[12];
rrsd = sum % 11;
sdv = rrsd < 2 ? 0 : 11 - rrsd;
if( (pdv == (int) cnpj[12] - 48) && (sdv = (int) cnpj[13] - 48) ) {
RETURN_TRUE;
}
else RETURN_FALSE;
}