Check php text theme

Asked

Viewed 50 times

0

I have a mini text recognizer where he should compare the words of the main text, 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’s 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 Palavrascot.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’t see where the bug is, because it doesn’t find a word in the search file.

  • vc ta giving an explosion in space in txt that must be swept uses preg_match with a regular expression

  • @Jasarorion I made the following change: $arrayCot = file_get_contents('palavras.txt'); $lines = preg_replace('/\s\s+/', ' ', trim($arrayCot)); But ended up not working with the regular expression nor with the Trim.

1 answer

1


There are small errors in the code.

$tema == "Cotidiano";

The operator == is used for comparison, use = for value assignment.

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 only one item, a text with many words. Use the 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 see the following:

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

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

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

If you want to check if the word is present on the line, use the strpos (or stripos not to differentiate between upper and lower case).

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

  • It worked perfectly! I made the changes to what I needed !!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.