Search by names within a text

1

I have text where I need to search by names. The text has no pattern. The list of names is an array. So far I have managed to do it normally, but I came across a situation where a given name had a variant and the same was not found - because I am doing a literal search. Example:

$nomes = array("João da Silva","Antônio de Souza Santos","Mário Faria de Oliveira");

As I said, my search is working. But if there is a case where the name "Antônio de Souza Santos" appear in the text as "Antônio de Souza" or "Antônio Santos", I can not find.

I tried to apply this solution: Filter word in a text with php , but I did not get much success. Anyone have a suggestion to resolve this?

An example of the text I need to search:

  

Date of Publication: 02/07/2015 1st CIRCLE SQUARE File of 06/30/2015 JUDGE (A) OWNER: Nelson Marques da Silva JUDGE (A) SUBSTITUTE (A): Adriani Freire Diniz Garcia Denise Lucio Tavela Paulo Cássio Moreira JUDGE (A) PLANTONISTA: Flávio Branquinho da Costa Dias João Batista Mendes Filho Marcos Irany Rodrigues da Conceição Author (s): Alan Menezes Sidney ORDINARY PROCEDURE 00119 - 0055452.27.2011.8.13.0016 Author: Carlos Roberto Bertholucci; Defendant: Banco Bradesco Financiamentos S.A. = > View of the defendant. Term of 0015 day (s). The defendant shall be summoned to collect the amount of R $ 290.03, as costs, of a Judicial Fee, a criminal fine and other procedural expenses due to the State, within a period of 15 (fifteen) days, under penalty of registration of the debit, plus a 10% (ten percent) fine, in active debt and registration in the Cadastro Informativo de Inadimplência in relation to the Public Administration of the State of Minas Gerais CADIN-MG and the extrajudicial protest of the Certificate of Active Debt, by the Attorney General of the State AGE. Advocate - Clovis Roberto Czegelski, Graciela Camargo Teixeira Rios, Matheus Siqueira de Alvarenga, Marta Aparecida de Castro Martiniano, Carlos Roberto de Carvalho Junior, Luciana Pereira, Francine Lopes Carvalho, Sebiana Vitale Cruz, Thaisse Christiane Schreier, Guilherme Octavio Santos Rodrigues, Marina Guimaraes Ribeiro, Fabiano Toledo Reis Souza, Leonardo Alves Bechara.

Note: I'm using PHP.

    
asked by anonymous 03.07.2015 / 22:50

1 answer

1

I made a function that traverses the list of names and gives a preg_match in the name, where $nome has its spaces replaced by pattern (.*?) .

procura_nome.php

<?php

    /**
     * Pesquisa por nomes em um texto, recebendo $nomes como array
     *
     * @param   array   $nomes
     * @param   string  $texto
     * @return  array
     */
    function pesquisaNomes($nomes, $texto)
    {

        $todos_resultados = [];

        if(is_array($nomes) && !empty($nomes))
        {
            foreach ($nomes as $key => $nome)
            {
                $resultado = [];
                preg_match("/".str_replace(" ", '(.*?)', $nome)."/i", $texto, $resultado);
                $resultado = array_filter(array_map('trim', $resultado));

                if(!empty($resultado))
                {
                    $todos_resultados[$nome] = $resultado[0];
                }
            }

        }
        return $todos_resultados;
    }


    $nomes = array (
        'João da Silva',
        'Antônio de Souza Santos',
        'Antônio de Souza',
        'Antônio Santos',
        'Mário Faria de Oliveira',
        'Nelson Marques',
        'Nelson da Silva',
    );

    $texto = 'Data de Publicação..: 02/07/2015 1ª VARA CÍVEL Expediente de 30/06/2015. Procurar por Antônio de Souza Santos. JUIZ(A) TITULAR: Nelson Marques da Silva JUIZ(A) SUBSTITUTO(A): Adriani Freire Diniz Garcia Denise Lucio Tavela Paulo Cássio Moreira JUIZ(A) PLANTONISTA: Flávio Branquinho da Costa Dias João Batista Mendes Filho Marcos Irany Rodrigues da Conceição ESCRIVÃO(Ã) : Alan Menezes Sidney PROCEDIMENTO ORDINÁRIO 00119 - 0055452.27.2011.8.13.0016 Autor: Carlos Roberto Bertholucci; Réu: Banco Bradesco Financiamentos S.A. => Vista ao réu. Prazo de 0015 dia(s) . Fica a parte ré intimada para o recolhimento da importância de R$ 290,03, a título de custas, de Taxa Judiciária, de multa penal e de outras despesas processuais devidas ao Estado, no prazo de 15 (quinze) dias, sob pena de inscrição do débito, acrescida de multa de 10% (dez por cento), em dívida ativa e de registro no Cadastro Informativo de Inadimplência em relação à Administração Pública do Estado de Minas Gerais CADIN-MG e do protesto extrajudicial da Certidão de Dívida Ativa, pela Advocacia-Geral do Estado AGE. Adv - Clovis Roberto Czegelski, Graciela Camargo Teixeira Rios, Matheus Siqueira de Alvarenga, Marta Aparecida de Castro Martiniano, Carlos Roberto de Carvalho Junior, Luciana Pereira, Francine Lopes Carvalho, Sebiana Vitale Cruz, Thaisse Christiane Schreier, Guilherme Octavio Santos Rodrigues, Marina Guimaraes Ribeiro, Fabiano Toledo Reis Souza, Leonardo Alves Bechara';

    var_export(pesquisaNomes($nomes, $texto));

Result

array (
  'Antônio de Souza Santos' => 'Antônio de Souza Santos',
  'Antônio de Souza' => 'Antônio de Souza',
  'Antônio Santos' => 'Antônio de Souza Santos',
  'Nelson Marques' => 'Nelson Marques',
  'Nelson da Silva' => 'Nelson Marques da Silva',
)
    
04.07.2015 / 02:02