Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fernandotholl

preg_match e expressão regular

Recommended Posts

Bom dia Pessoal, já estou quebrando a cabeça e não consigo resolver essa questão, tenho o seguinte código:

 

<?php

/* String com os países possíveis */
$country_list = 'brasil|unidos|alemanha|fran[çÇcC]a|costa\s?rica|china|jap[ãÃaA]o|it[áÁaA]lia|taiwan|argentina|su[ÉéeE]cia|cingapura|canad[ÁáAa]|dinamarca|austr[ÁáaA]lia|m[ÉéEe]xico|per[uÚúU]|uruguai|b[ÉéEe]lgica|hungria';
$country_list .= '|irlanda|porto\s?rico|[ÍíiI]ndia|\(?\s?reino\s?unido\s?\)?|hong\s?kong|indon[éÉEe]sia|su[ÍíiI][çÇ]a|portugal|espanha|r[úÚuU]ssia|chile|sul|cor[éÉeE]ia|equador|col[ôÔoO]mbia|norte|rep[ÚúuU]blica';

/* String a ser processada */
$string = "GILVAN DIAS F DE ARAUJO RIO CLARO ME 8.06005-2 Instrumentos de Uso Odontologico 25351.457511/2011-45 KIT INSTRUMENTAL BUCO MAXILO - GA INSTRUMENTAL FABRICANTE: GILVAN DIAS F DE ARAUJO RIO CLARO ME - BRASIL 400-400-018-CHAVE EM CRUZ 2,0; 400-400-009-MEDIDOR DE PROFUNDIDADE; 400-400-010-PINÇA UNIVERSAL; 400-400-011-CANULA GUIA DE BROCA 1,5/2,0; 400-400-012-CANULA REDUTORA 1,5/2,0; 400-400-013-PUNÇÃO 1,5/2,0; 400-400-014-MACHO GRADUADO 2,0; 400-400-015-CABO PARA RETRATOR DE BOCHECHA 1,5/2,0; 400-400-016-RETRATOR DE BOCHECHA 1,5/2,0; 400-400-017-Posicionador de placas 1,5/2,0; 400-500-001-Alicate de Corte Articulado 2.4; 400-500-002-Pinça Auto Centrante; 400-500-003-Pinça de Fixaçao Ossea Direita; 400-500-004-Pinça de Fixaçao Ossea Esquerda; 400-500-005-Dobrador Manual; 400-500-006-Modelador de placa; 400-500-007-CABO PARA CHAVE 2.4; 400-500-008-CHAVE EM CRUZ 2.4; 400-500-011-CANULA GUIA DE BROCA 2.4; 400-500-012-CANULA REDUTORA 2.4; 400-500-013-PUNÇÃO 2.4; 400-500-014-MACHO GRADUADO 2,4; 400-500-015-CABO PARA RETRATOR DE BOCHECHA 2.4; 400-500-016-RETRATOR DE BOCHECHA 2.4; 400-500-017-Posicionador de placas 2.4      Kit Instrumental Buco Maxilo : 400-400-024-Broca diam. 1,1 x 70; 400-400-025-Broca diam. 1,6 x 70; 400-400-026-Broca diam. 1,1 x 100; 400-400-027-Broca diam. 1,6 x 100; 400-400-001-ALICATE 1,5; 400-400-002-ALICATE 2,0; 400-400-003-ALICATE DE CORTE 1,5/2,0; 400-400-004-ALICATE DE DOBRA 1,5; 400-400-005-ALICATE DE DOBRA 2,0; 400-400-006-ALICATE LISO 1,5/2,0; 400-400-007-CABO PARA CHAVE 1,5/ 2,0; 400-400-008-CHAVE EM CRUZ 1,5/ 2,0; 400-400-009-MEDIDOR DE PROFUNDIDADE; 400-400-010-PINÇA UNIVERSAL; 400-400-011-CANULA GUIA DE BROCA 1,5/2,0; 400-400-012-CANULA REDUTORA 1,5/2,0; 400-400-013-PUNÇÃO 1,5/2,0; 400-400-014-MACHO GRADUADO 2,0; 400-400-015-CABO PARA RETRATOR DE BOCHECHA 1,5/2,0; 400-400-016-RETRATOR DE BOCHECHA 1,5/2,0; 400-400-017-Posicionador de placas 1,5/2,0; 400-400-018-ESTOJOparaPLACAS 1,5; 400-400-019-ESTOJOparaPLACAS 2,0; 400-400-020-BANDEJA de instrumentais superior 1,5/2,0; 400-400-021-BANDEJA de instrumentais inferior 1,5/2,0; 400-400-022-CAIXA PLÁSTICA; 400-400-023-Tampa para bandeja de implantes; 400-500-021-Broca diam. 2,0 x 70; 400-500-022-Broca diam. 2,0 x 100; 400-500-001-Alicate de Corte Articulado 2.4; 400-500-002-Pinça Auto Centrante; 400-500-003-Pinça de Fixaçao Ossea Direita; 400-500-004-Pinça de Fixaçao Ossea Esquerda; 400-500-005-Dobrador Manual; 400-500-006- Modelador de placa; 400-500-007-CABO PARA CHAVE 2.4; 400-500-008-CHAVE EM CRUZ 2.4; 400-500-009-MEDIDOR DE PROFUNDIDADE; 400-500-010-PINÇA UNIVERSAL; 400-500-011-CANULA GUIA DE BROCA 2.4; 400-500-012-CANULA REDUTORA 2.4; 400-500-013-PUNÇÃO 2.4; 400-500-014-MACHO GRADUADO 2,4; 400-500-015-CABO PARA RETRATOR DE BOCHECHA 2.4; 400-500-016-RETRATOR DE BOCHECHA 2.4; 400-500-017-Posicionador de placas 2.4; 400-400-024-Broca diam. 1,1 x 70; 400-400-025-Broca diam. 1,6 x 70; 400-400-026-Broca diam. 1,1 x 100; 400-400-027-Broca diam. 1,6 x 100; 400-500-021-Broca diam. 2,0 x 70; 400-500-022-Broca diam. 2,0 x 100; 400-400-001-ALICATE 1,5; 400-400-002-ALICATE 2,0; 400-400-003-ALICATE DE CORTE 1,5/2,0; 400-400-004-ALICATE DE DOBRA 1,5; 400-400-005-ALICATE DE DOBRA 2,0; 400-400-006-ALICATE LISO 1,5/2,0; 400-400-007-CABO PARA CHAVE 1,5/ 2,0; 400-400-008-CHAVE EM CRUZ 1,5; CLASSE : II 80600529001 #Petição:8030 - Cadastramento ( isenção ) de material de uso médico nacional";

/* Expressão regular */
$pattern = "/[0-9]{5}.[0-9]{6}\/[0-9]{2,4}\-[0-9]{2}(.*)fabricante:(.*)($country_list)/i";

preg_match($pattern, $string, $result);

var_dump($result);
?>

 

Eu utilizo essa string com os países pois é o termo comum que eu uso para explodir e separar os dados que eu preciso, no caso o resultado que eu gostaria seria esse:

 

Array(
   [0] => "A String completa";
   [1] => "KIT INSTRUMENTAL BUCO MAXILO - GA INSTRUMENTAL ";
   [2] => "GILVAN DIAS F DE ARAUJO RIO CLARO ME - ";
   [3] => "BRASIL";
)

 

Porém não tenho o resultado esperado.

Se alguem conseguir me ajudar ficaria grato

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, acredito que o mais simples, era você fazer mais de uma ER.

Pegar tudo em uma só, fica meio complicado, e talvez inconsistente:

 

$pattern = "/([^0-9]+)\s[0-9\.-]+\s[a-z\s]+\s[0-9\.-\/-]{20}\s([a-z\s]+)\s/i";


echo '<pre>';
preg_match($pattern, $string, $result);

var_dump($result);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, o problema é que essa string é apenas uma parte dela, eu já tenho umas 40 ER, mais a solução mesmo vai ser outra ER, aproveitando a questão das ERS, tenho outra dúvida.

 

Estou convertendo um PDF (com pdftk do linux), porém esse meu pdf possui colunas, e as palavras estão quebradas tipo

 

Endoscopio Rigido 25351.131554/2011-78

ENDOSCÓPIOS PARA ARTROSCOPIA DE QUADRIL

FABRICANTE : RAZEK EQUIPAMENTOS LTDA ME - BRASIL

DISTRIBUIDOR : RAZEK EQUIPAMENTOS LTDA ME - BRA-

SIL

ENDOSCÓPIO 30° E 275MM - CÓDIGO 741340000; ENDOSCÓ-

PIO 70° E 275MM - CÓDIGO 741350000

CLASSE : II 80356130051

 

Eu fiz uma ER para o preg_replace assim:

 

<?php
$content = "Endoscopio Rigido 25351.131554/2011-78
ENDOSCÓPIOS PARA ARTROSCOPIA DE QUADRIL
FABRICANTE : RAZEK EQUIPAMENTOS LTDA ME - BRASIL
DISTRIBUIDOR : RAZEK EQUIPAMENTOS LTDA ME - BRA-
SIL
ENDOSCÓPIO 30° E 275MM - CÓDIGO 741340000; ENDOSCÓ-
PIO 70° E 275MM - CÓDIGO 741350000
CLASSE : II 80356130051";

$content = preg_replace("/\-\n/i", "", $content);  
?>

 

Pois ao mesmo tempo que eu tenho strings quebradas, eu posso ter esse código quebrado também: 25351.131554/2011-78

 

Eu tentei mais não consegui, eu preciso verificar se no momento da quebra de linha é um texto, ai sim aplicar o replace, se não mantém o hifen (25351.131554/2011{-}78)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.