Ir para conteúdo

POWERED BY:

Arquivado

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

dhyoguinhu

[Resolvido] Buscar palavra em string

Recommended Posts

Boa tarde.

 

Tenho um desafiosinho para voces,

 

eu recebo uma fixa no formato txt e preciso importar ela para o banco de dados.

uso o fopen para abrir a ficha e ja consigo ler as linhas e colocar em uma variavel.

ate ai tudo bem, mas agora vem o poblema, eu estava ultilizando a funcao substr para retirar as partes do arquivo.

mas so da certo quando eu sei exatamente onde ele inicia e termina.

mas vejam o seguinte exemplo

 

Placa: AAA-9999 Municipio: MORRO GRANDE-SC Codigo: 999999

 

eu teria que dividir em partes e upar no banco de dados, mas nao sei exatamente onde terminam os campos, afinal a cidade pode ser maior, e entao o codigo (SC)vai ficar mais para traz ou para frente.

teria alguma maneira do PHP buscar a palavra "Codigo:" e apartir daew ir buscando de traz para frente?

 

ficou meio confuso mais acho que voces vao entender.

 

desde ja agradeco. ate mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um desafiosinho para voces,

 

hehehe, brincadeira de criança. :P

 

Placa: AAA-9999 Municipio: MORRO GRANDE-SC Codigo: 999999

 

eu teria que dividir em partes e upar no banco de dados, mas nao sei exatamente onde terminam os campos, afinal a cidade pode ser maior,

e entao o codigo (SC)vai ficar mais para traz ou para frente.

 

Bom, isso você consegue usando expressão regular, olha só:

 

/**
 * Interpreta as informações de uma string e retorna uma matriz associativa
 * @param string $str A string que contém as informações
 * @return array Matriz associativa contendo os dados separados
 */
function parseInfo( $str ){
    $mtc = array();
    $ret = array();

    if ( preg_match( "/^([^:]+):\\s+(.*)\\s+([^:]+):\\s+(.*)\\s+([^:]+):\\s*(.*)$/" , $str , $mtc ) ){
        for ( $i = 1 , $t = count( $mtc ) ; $i < $t ; $i += 2 ){
            $nome    = $mtc[ $i ];
            $valor    = $mtc[ $i + 1 ];
            $ret[ $nome ] = $valor;
        }
    } else {
        throw new Exception( "A string não corresponde ao padrão definido." );
    }

    return( $ret );
}

Para usar:

 

$str = "Placa: AAA-9999 Municipio: MORRO GRANDE-SC Codigo: 999999";
print_r( parseInfo( $str ) );

A saída será:

 

Array
(
    [Placa] => AAA-9999
    [Municipio] => MORRO GRANDE-SC
    [Codigo] => 999999
)

PS: não leva a mal a brincadeira do início. :-)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!! Funcionou certinho. mas apesar de eu ter pesquisado não consegui entender como a função funciona...

 

Dê uma olhada nesse link: http://www.regular-expressions.info/reference.html

 

Ai se tiver alguma dúvida a gente tenta tirar. ;)

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.