Woorden tellen, specifieke woorden! PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ismael aharouay

ismael aharouay

05/06/2011 00:41:57
Quote Anchor link
beste leden,

Ik probeer nu al een aantal uur te brainstormen hoe ik dit zou kunnen oplossen.

Wat ik graag wil doen is specifieke woorden wil opzoeken in een geposte commentaar.

Wellicht denk ik te hard en doe ik het veels te moeilijk.
$pcount moet in dit geval 3 aangeven (varieert natuurlijk kwa hoeveelheid tekst en $positief)
Op het momenten heb ik met PHP dit gemaakt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
function commentaarevalueren(){
    
$commentaar = 'goed ik lever positief en leuke commentaar op.';
$positief = 'positief leuke blij goed';
$positief=explode(' ',$positief);
$pcount = 0;

for($i=0;$i<count($positief);$i++) {
if(stripos($commentaar,$positief[$i]))
{

$pcount++;

}

else {
    echo "fout in de code!";
    }
}

echo "<br/>Aantal positieve woorden:" . $pcount;  

}

?>
 
PHP hulp

PHP hulp

26/11/2024 04:50:07
 
Ozzie PHP

Ozzie PHP

05/06/2011 03:03:10
Quote Anchor link
Aan de functie getDetectedWordsAmount geef je een tekst mee een een array met daarin de woorden die "gedetecteerd" moeten worden. De functie geeft het aantal woorden terug dat gedetecteerd is.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function getDetectedWordsAmount($text, array $words_to_detect){
    $words_detected = 0;
    foreach ($words_to_detect as $word) {
        if (strpos($text, $word)) {
            $words_detected++;
        }
    }

    return $words_detected;
}


// Voorbeeld 1
$words_to_detect = array('koe', 'melk', 'baksteen');
$text = 'De koe in de wei geeft melk.';
echo 'Deze woorden moeten gedetecteerd worden:<br><strong>' . implode(' ', $words_to_detect) . '</strong><br><br>';
echo  getDetectedWordsAmount($text, $words_to_detect) . ' van deze woorden komen voor in de tekst:<br><strong>' . $text . '</strong><br><br>';

// Voorbeeld 2
$words_to_detect = array('auto', 'fiets', 'vliegtuig', 'paard', 'hoefijzer');
$text = 'Het oude hoefijzer van het paard ligt in de schuur naast de fiets.';
echo 'Deze woorden moeten gedetecteerd worden:<br><strong>' . implode(' ', $words_to_detect) . '</strong><br><br>';
echo  getDetectedWordsAmount($text, $words_to_detect) . ' van deze woorden komen voor in de tekst:<br><strong>' . $text . '</strong><br><br>';

?>


Het resultaat in je browser:

Deze woorden moeten gedetecteerd worden:
koe melk baksteen

2 van deze woorden komen voor in de tekst:
De koe in de wei geeft melk.

Deze woorden moeten gedetecteerd worden:
auto fiets vliegtuig paard hoefijzer

3 van deze woorden komen voor in de tekst:
Het oude hoefijzer van het paard ligt in de schuur naast de fiets.
Gewijzigd op 05/06/2011 03:07:28 door Ozzie PHP
 
- Mark -

- Mark -

05/06/2011 12:04:02
Quote Anchor link
De functie van Ozzie kan korter.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

    function getDetectedWordsAmount($text, array $words_to_detect){
    
        return count(array_intersect($words_to_detect, str_word_count($text, 1)));
    }


?>
 
Ozzie PHP

Ozzie PHP

05/06/2011 14:39:12
Quote Anchor link
geinig Mark :)
 
Ismael aharouay

ismael aharouay

05/06/2011 17:49:30
Quote Anchor link
Dit is hem geworden uiteindelijk tekst word vanuit POST gehaald:
Domo arrigato!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
 function commentaarevalueren($commentaar, array $words_to_detect){
   $words_detected = 0;
  
    foreach ($words_to_detect as $word) {
        
        if (strpos($commentaar, $word)) {
            $words_detected++;
        }
    }

    return $words_detected;
}


     echo '<br/>Deze woorden worden herkent:<br/>';
   echo  'goed positief best perfect slecht maar kan negatief  <br/>';
   echo  '__________________________________________________________<br/>';
  
$commentaar = $_POST['commentaar'];

$words_to_detect = array('goed', 'goed', 'positief', 'best', 'perfect' );
echo '<br/>';
echo  commentaarevalueren($commentaar, $words_to_detect) . ' van deze woorden zijn positief.<br/>';
$pcount = commentaarevalueren($commentaar, $words_to_detect);

$words_to_detect = array('slecht', 'maar', 'kan', 'negatief' );
$commentaar = $_POST['commentaar'];
echo  commentaarevalueren($commentaar, $words_to_detect) . ' van deze woorden zijn negatief';
$ncount =commentaarevalueren($commentaar, $words_to_detect);

if($pcount > $ncount)
{

    echo"<br/>Commentaar is positief:<br/>";
    
    }

    else
    {
        echo "<br/>Commentaar is negatief:<br/>";
        }

    
    ?>
Gewijzigd op 05/06/2011 17:50:08 door ismael aharouay
 
Vincent Huisman

Vincent Huisman

05/06/2011 18:15:16
Quote Anchor link
En wat nou als ik bijvoorbeeld zeg:

Quote:
Dit is niet heel mooi maar dat vind ik niet erg.


Dan zal jou script zeggen dat het negatief is maar dat is het niet
 
Ismael aharouay

ismael aharouay

08/06/2011 19:01:37
Quote Anchor link
Tuurlijk wel? want 'maar' is als negatief gedeclareerd?

alles wat in the array positief ziet wordt opgeteld. Mooi zit er niet tussen. Ik heb het gewoon zo kort mogelijk gehouden. Het gaat mij meer om dat ik specifieke woorden kan tellen :)
Gewijzigd op 08/06/2011 19:09:03 door ismael aharouay
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.