Nossos pensamentos, nossas atitudes, nossas emoções, tudo são formas de energia, constantemente influenciando o mundo a nossa volta. (Diane Dreher)

logo Moraga  
Principal
Categorias
Ferramentas

telescópio

Semanal Mensal Geral
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Jogo da velha ou Tic tac toe
  4. Captcha em PHP
  5. createElement - Solução compatível com os navegadores
  6. removeChild - Remover elementos HTML por Javascript
  7. Copiando tabelas e removendo registros duplicados no MySQL
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Captcha em PHP
  4. Jogo da velha ou Tic tac toe
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. createElement - Solução compatível com os navegadores
  7. removeChild - Remover elementos HTML por Javascript
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Captcha em PHP
  3. Jogo da velha ou Tic tac toe
  4. createElement - Solução compatível com os navegadores
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. Apache Expires Header - Cache de imagens, Javascript e CSS
  7. Removendo linhas e espaços em branco de strings
  8. removeChild - Remover elementos HTML por Javascript
  9. Verificar se existe um valor no Array em Javascript
  10. Gerando Thumbnails com PHP
e-mail Enviar por e-mail imprimir Imprimir
PHP

Verificar CNPJ com PHP

Por Alejandro Fernandez Moraga

Foto por <a rel="nofollow" href="http://www.flickr.com/photos/adspackman/155435476/">Alan D</a> Foto por Alan D

is_cnpj - verifica se a string de entrada é um CNPJ válido. Se for válido, o CNPJ é retornado com 14 caracteres e sem formatação.

  • Não distingue CNPJ com ou sem formatação
    xxx.xxx.xxx/xxxx-xx ou xxxxxxxxxxxxxxx
  • Não faz diferença se o CNPJ é composto por 14, 15, 18 ou 19 caracteres
    xx.xxx.xxx/xxxx-xx, xxxxxxxxxxxxxx, xxx.xxx.xxx/xxxx-xx ou xxxxxxxxxxxxxxx
  • Se for válido, retorna o CNPJ com 14 caracteres e sem formatação
    xxxxxxxxxxxxxx

Exemplos:

if (is_cnpj($cnpj)) {
// CNPJ válido
}
else {
// CNPJ inválido
}

// Se verdadeiro, a função retorna o CNPJ sem formatação e com 14 caracteres
$cnpj = '10.530.985/0001-10';
if ($cnpj = is_cnpj($cnpj)) { // atribuição e comparação
// CNPJ válido
echo $cnpj; // 10530985000110
}

// Erro comum de outros códigos, validar cadeia de zeros
if (is_cnpj('00.000.000/0000-00')) {
// ...
}

// CNPJ com 19 caracteres
if (is_cnpj('010.530.985/0001-10')) {
echo 'cnpj válido';
}

// CNPJ sem formatação
if (is_cnpj(10530985000110)) {
echo 'cnpj válido';
}

Código fonte

<?php
/**
* Verifica CNPJ
*
* @author Alejandro Fernandez Moraga <moraga86@gmail.com>
* @link http://www.moraga.com.br
* @param string $str CNPJ
* @return string|false
*/

function is_cnpj($str) {

if (!preg_match('|^(\d{2,3})\.?(\d{3})\.?(\d{3})\/?(\d{4})\-?(\d{2})$|', $str, $matches))
return false;

array_shift($matches);
$str = implode('', $matches);

if (strlen($str) > 14)
$str = substr($str, 1);

$sum1 = 0;
$sum2 = 0;
$sum3 = 0;
$calc1 = 5;
$calc2 = 6;

for ($i=0; $i <= 12; $i++) {
$calc1 = ($calc1 < 2) ? 9 : $calc1;
$calc2 = ($calc2 < 2) ? 9 : $calc2;

if ($i <= 11)
$sum1 += $str[$i] * $calc1;

$sum2 += $str[$i] * $calc2;
$sum3 += $str[$i];
$calc1--;
$calc2--;
}

$sum1 %= 11;
$sum2 %= 11;

return ($sum3 && $str[12] == ($sum1 < 2 ? 0 : 11 - $sum1) && $str[13] == ($sum2 < 2 ? 0 : 11 - $sum2)) ? $str : false;
}

?>

Comentar
captcha