Check php text theme

0

I have a mini text recognizer where it should compare if the main text words exist in a keyword text:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Pesquisa</title>
</head>
<?PHP
$texto1 = file_get_contents('teste.txt');
//adiciona o texto em posições do array
preg_match_all('|texto\d+(.+?)<\/body>|is', $texto1, $resultado);
$textos = $resultado[1];
//textos[0] ...

$arrayCot = explode(" ", file_get_contents('PalavrasCot.txt')); // arquivo com as palavras a serem guardadas
$arrayEmp = explode(" ", file_get_contents('PalavrasEmp.txt')); // arquivo com as palavras a serem guardadas
$arrayDir = explode(" ", file_get_contents('PalavrasDir.txt')); // arquivo com as palavras a serem guardadas
$arrayEsp = explode(" ", file_get_contents('PalavrasEsp.txt')); // arquivo com as palavras a serem guardadas
$arrayPol = explode(" ", file_get_contents('PalavrasPol.txt')); // arquivo com as palavras a serem guardadas
$arrayVp = explode(" ", file_get_contents('PalavrasVp.txt')); // arquivo com as palavras a serem guardadas
$contCot = 0;
$contEmp = 0;
$contDir = 0;
$contEsp = 0;
$contPol = 0;
$contVp = 0;
$qtd = sizeof($textos);

//echo $qtd;

$tema == "Cotidiano";
for($n = 0; $n < $qtd; $n++){
    $arra = array($textos[$n]);
    if($tema == "Cotidiano"){
        foreach($arrayCot as $valor){
            if(in_array($valor, $arra)){
                echo $valor."\n";
                echo $contCot++;
            }
        }
    }
    $tema = "Emprego";
    if($tema == "Emprego"){
        foreach($arrayEmp as $valor){
            if(in_array($valor, $arra)){
                echo $valor."\n";
                $contEmp++;
            }
        }
    }
    $tema = "Direitos";
    if($tema == "Direitos"){
        foreach($arrayDir as $valor){
            if(in_array($valor, $arra)){
                echo $valor."\n";
                $contDir++;
            }
        }
    }
    $tema = "Esportes";
    if($tema == "Esportes"){
        foreach($arrayEsp as $valor){
            if(in_array($valor, $arra)){
                echo $valor."\n";
                $contEsp++;
            }
        }
    }
    $tema = "Policial";
    if($tema == "Policial"){
        foreach($arrayPol as $valor){
            if(in_array($valor, $arra)){
                echo $valor."\n";
                $contPol++;
            }
        }
    }
    $tema = "VidaPublica";
    if($tema == "VidaPublica"){
        foreach($arrayVp as $valor){
            if(in_array($valor, $arra)){
                echo $valor."\n";
                $contVp++;
            }
        }
    }
    $tema = "Cotidiano";                    
}
?>
</html>

How is the text in test.txt:

TEXTO1
<head> <edic><Diário Gaúcho 12/05/2013</edic>
<autor>Denise Waskow, [email protected]</autor>
</head>
<body>
<subtítulo>Para celebrar</subtítulo>
<título>Mães e filhos se divertem em atividades culturais no Parque da Redenção</título>
Jogos de mesa, futebol, brinquedos infláveis, teatro, dança e uma série de outras brincadeiras movimentaram o domingo no parque
Criançada aproveitou o domingo nos brinquedos
Denise Waskow
[email protected]
Se existe algo que deixa toda mãe realizada é ver que o filho está feliz. E quem levou a prole neste domingo à Redenção ganhou esse presente para celebrar o Dia das Mães. 
Jogos de mesa, futebol, brinquedos infláveis, teatro, dança e uma série de outras brincadeiras movimentaram o domingo, em uma ação promovida pela Secretaria Municipal de Esporte, Recreação e Lazer da Capital. A gurizada aproveitou muito, e as mamães se emocionaram com a alegria deles.
<subtítulo>Diversão nos brinquedos</subtítulo>
Enquanto a pequena Amanda, três anos, criava coragem para descer no tobogã inflável, a mãe, a babá Roselaine Pereira, 30 anos, ficava na parte de baixo do brinquedo, incentivando a menina a descer, fotografando e se divertindo junto.  
- É maravilhoso, é ótimo. O melhor presente é isso, a felicidade deles - derrete-se.
O filho mais velho, Jhonattan, 13 anos, já não está mais na fase de brincar, mas nem por isso deixou de acompanhar a mãe. Enquanto a irmã caçula passava de um brinquedo para o outro, ele contou como homenageou Roselaine no início do domingo: 
- Eu disse que eu amo ela.
<subtítulo>Uma torcida especial</subtítulo>
"Vai Joana, vai Joana!". Ao lado do espaço demarcado para o futebol, a massoterapeuta Tânia Regina Horta, 46 anos, incentivava a filha caçula, de seis anos, no esporte. E apesar de a mãe ser gremista e a filha colorada, não existe rivalidade. O que conta nessa relação, claro, é o amor. 
- A mãe que está sendo homenageada e são os filhos que se divertem. Está ótimo, o melhor é curtir a companhia deles - elogia. 
Depois de uma manhã inteira de brincadeiras, o planejamento de Tânia era encontrar os dois filhos mais velhos, além dos dois enteados, para o tradicional almoço de Dia das Mães.
</body>


TEXTO2
<head> <edic><Diário Gaúcho 14/05/2013</edic>
<autor></autor>
</head>
<body>
<subtítulo>Colisão</subtítulo>
<título>Sargento dos Bombeiros morre em acidente na zona sul da Capital</título>
Itiberê Poty de Abreu perdeu o controle da moto após colidir com um carro
Trânsito ficou em meia pista na Avenida Wenceslau Escobar
Um motociclista morreu após colidir hoje com um carro na Avenida Wenceslau Escobar, na zona sul de Porto Alegre. Itiberê Poty de Abreu, 49 anos, era sargento do Corpo de Bombeiros.
A vítima subia a avenida quando colidiu com o carro da frente e perdeu o controle da moto. Um outro veículo que trafegava no sentido contrário não conseguiu desviar e também se envolveu no acidente. O motociclista morreu no local.
O trânsito ficou em meia pista na Avenida Wenceslau Escobar e seria liberado após a remoção da vítima.
</body>

And in PalabrasCot.txt:

parque. parque, parque brincadeiras. brincadeiras, brincadeiras mães mães, mães. filho, filho. filho acidente. acidente, acidente venda venda, venda. família família natureza, natureza. natureza carro. carro, carro crianças, crianças. crianças escola, escola. escola 

Problem: I can not see where the error is, because it ends up not finding any words found in the search file.

    
asked by anonymous 24.10.2016 / 22:01

1 answer

1

It has minor errors in the code.

$tema == "Cotidiano";

The == operator is used for comparison, use = to assign value.

for($n = 0; $n < $qtd; $n++){
    $arra = array($textos[$n]);

    if($tema == "Cotidiano"){
        foreach($arrayCot as $valor){
            if(in_array($valor, $arra)){

The variable $textos[$n] is a string , $arra is a array with an item only, a text with many words. Use explode to separate lines by line break:

for($n = 0; $n < $qtd; $n++) {
    $arra = explode("\n", $textos[$n]);

    // ...

Once these changes are made, the code may work as expected, but look at the following:

for($n = 0; $n < $qtd; $n++){
    $arra = explode("\n", $textos[$n]);
    // ...   

        foreach($arrayCot as $valor){
            if(in_array($valor, $arra)){
               // ...
            }
        }
 // ...
}

The words in the file PalavrasCot.txt (stored in $arrayCot ) will be compared to the entire lines of texts. For example, you will only find the word jokes , if it occupies an entire line, otherwise you will not find the word.

If you want to check if the word is present on the line, use strpos (or stripos for case insensitive).

for($n = 0; $n < $qtd; $n++) {
    $arra = $textos[$n]; // Não é um array, somente uma string

    if($tema == "Cotidiano"){
        foreach($arrayCot as $valor){
            if (strpos($arra, $valor) !== false) {
                echo $valor . "\n";
                echo $contCot++ . "\n";
            }
        }
    }

    // ... Siga o mesmo raciocínio nos códigos que seguem.
}

See DEMO

    
24.10.2016 / 23:23