Otimizar regex
Bom Dia !
Peguei um código para otimizar, onde basicamente ele abre um arquivo csv, e insere no bd.
Esse arquivo csv pode ter um numero bastante variavel de linhas, onde a média fica em torno de 50 mil llinhas.
cada linha pode ter de 3 a 35 colunas;
Após estudar o código, havia 2 pontos que causavam lentidão ao processar o arquivo.
O primeiro era no sql: estava fazendo um insert para cada linha existente no arquivo, isso foi mudado e agora executa apenas 1 insert com o conteudo de todas as linhas existentes no arquivo.
O segundo está na expressão regular que valida os numeros de telefone que podem ter até 10 numeros de telefone por linha, o que causa um impacto no desempenho maior até do que a questão do sql.
function montaFone($numero) {
//remove nao numericos
$numero = preg_replace('/[^0-9]/', '', $numero);
//todo numero deve comecar com 0 do DDD
if (substr($numero, 0, 1) <> "0") {
$numero = "0" . $numero;
}
return $numero;
//numeros com DDD + 8 DIGITOS
if (preg_match('/^0[1-9][0-9][1-9][0-9]{7}$/', $numero)) {
if (prefixoValido($numero)) {
return $numero;
} else {
//verifica se ao acrescetar um 9 depois do DDD o telefone fica valido
$novo = substr($numero, 0, 3) . '9' . substr($numero, 3);
if (prefixoValido($novo)) {
return $novo;
}
}
}
//novos celulares DDD + "9" + 8 DIGITOS
if (preg_match('/^0[1-9][0-9]9[0-9]{8}$/', $numero)) {
if (prefixoValido($numero)) {
return $numero;
}
return "";
}
Como não sou grande conhecedor de regex, peço a ajuda de vocês para ver como melhorar isso :)
Discussão (2)
Carregando comentários...