Teller specifiek woord op website
Ik ben redelijk nieuw in PHP land en kom niet uit een scriptje wat ik wil maken.
Ik zou graag zien dat een PHP script telt hoe vaak de woorden 'Ajax' en 'PSV' voorkomen op de voorbeeld-url: http://feyenoord.nl/nieuws.html
Kan iemand mij verder helpen? Ik heb wel het een en ander geprobeerd, maar kom er niet uit terwijl het volgens mij echt heel simpel zou moeten zijn.
Thanx, enne de beste wensen voor é nieuwe jaar hé!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$psv = 0;
$ajax = 0;
$other_words = 0;
$pagina = file_get_contents("http://feyenoord.nl/nieuws.html");
$array = str_word_count($pagina,1);
foreach($array as $value){
if($value == "psv"){
$psv++;
}else if($value == "ajax"){
$ajax++;
}else{
$other_words++;
}
}
echo("Psv word:".$psv." Keer genoemd.<br />");
echo("Ajax word:".$ajax." Keer genoemd.<br />");
echo("Andere Woorden:".$other_words." Keer genoemd.<br />");
?>
$psv = 0;
$ajax = 0;
$other_words = 0;
$pagina = file_get_contents("http://feyenoord.nl/nieuws.html");
$array = str_word_count($pagina,1);
foreach($array as $value){
if($value == "psv"){
$psv++;
}else if($value == "ajax"){
$ajax++;
}else{
$other_words++;
}
}
echo("Psv word:".$psv." Keer genoemd.<br />");
echo("Ajax word:".$ajax." Keer genoemd.<br />");
echo("Andere Woorden:".$other_words." Keer genoemd.<br />");
?>
Zoiets dacht ik...
Gewijzigd op 01/01/1970 01:00:00 door Jeffrey H
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
echo 'Ajax: '.$iAjax.' keer <br/>';
echo 'Psv: '.$iPsv.' keer <br/>';
?>
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
echo 'Ajax: '.$iAjax.' keer <br/>';
echo 'Psv: '.$iPsv.' keer <br/>';
?>
Ow, die kende ik nog niet :P
Als als ik één resultaat wil.
Dus niet:
Ajax: 3 keer
PSV: 2 keer
maar:
In totaal komt er "5x" een andere club voor.
Ik heb iets geprobeerd van:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
echo 'In totaal komt er '.$iAjax.'+ '.$iPsv.' een andere club voor.';
?>
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
echo 'In totaal komt er '.$iAjax.'+ '.$iPsv.' een andere club voor.';
?>
maar dat werk helaas niet...
Nee dat is een voorbeeld url. Ik heb em geprobeerd op de url waar ik em voor wil gebruiken, maar daar werkte dit niet :-(
Ik heb ook al wat andere mogelijkheden geprobeerd, maar het lukt me niet...
Iemand anders?
Thanx,
Stijn
Wat werkt er dan niet? Das misschien ook handig om te weten :-D.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
echo 'In totaal komt er ' . $iAjax + $iPsv . ' een andere club voor.';
?>
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
echo 'In totaal komt er ' . $iAjax + $iPsv . ' een andere club voor.';
?>
Bedankt!
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
echo 'In totaal komt er ' . $iAjax + $iPsv . ' een andere club voor.';
?>
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
echo 'In totaal komt er ' . $iAjax + $iPsv . ' een andere club voor.';
?>
De eerste ($iAjax) wordt niet meegeteld in de echo.
Ik heb vanalles veranderd met punjes en hoofdletters, maar het telt em gewoon niet mee. Zelfs als ik de 2 omwissel pakt hij de eerste niet. Zeer vreemd...
Anyone an answer?
Alvast bedankt weer,
Stijn
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
$totaal = $iAjax + $iPsv;
echo 'In totaal komt er ' . $totaal . ' een andere club voor.';
?>
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count($sContent, 'Ajax');
$iPsv = substr_count($sContent, 'PSV');
$totaal = $iAjax + $iPsv;
echo 'In totaal komt er ' . $totaal . ' een andere club voor.';
?>
weet niet of het er mee te maken zou kunnen hebben, maar let ook op de hoofdletters ;)
Ik had idd al een paar regels toegevoegd met AJAX, PSV, psv, Psv etc
Het werkt nu goed!
Stijn
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count(strtolower($sContent), 'ajax');
$iPsv = substr_count(strtolower($sContent), 'psv');
$iTotaal = $iAjax + $iPsv;
echo 'In totaal komt er ' . $iTotaal . ' een andere club voor.';
?>
$sContent = file_get_contents('http://feyenoord.nl/nieuws.html');
$iAjax = substr_count(strtolower($sContent), 'ajax');
$iPsv = substr_count(strtolower($sContent), 'psv');
$iTotaal = $iAjax + $iPsv;
echo 'In totaal komt er ' . $iTotaal . ' een andere club voor.';
?>
Ik wist dat er zoiets bestond, maar had al zoveel vragen gesteld... Super bedankt weer!
Natuurlijk wel eerst altijd even zelf zoeken of je een antwoord kunt vinden ;-)
Als je strtolower om de file_get_contents set hoef je het maar 1 keer te doen. In het voorbeeld gebeurt het maar 2 keer, alleen als je het echt vaker doet kan het wel uitmaken.
TJVB schreef op 02.01.2008 16:56:
Daar heb je gelijk in. Maar houd er wel rekening mee dat die bewerking dan niet meer terug te draaien is. Als je $sContent nog eens zou willen gebruiken om bijvoorbeeld tekst te echoën, zitten daar dan geen hoofdletters meer in...Als je strtolower om de file_get_contents set hoef je het maar 1 keer te doen. In het voorbeeld gebeurt het maar 2 keer, alleen als je het echt vaker doet kan het wel uitmaken.
Vandaar mijn keuze om het pas bij de substr_count() functie toe te passen ;-)
De kern van het verhaal is dit:
Ik heb een reguliere expressie gebruikt met \b (word boundary), omdat bij bijvoorbeeld een club als 'AZ" ook
spinazie
spinaziebed
spinazieblad
suikerglazuur
tandglazuur
terrazzo
terrazzovloer
matched. (in totaal 501 woorden uit de 2005 woordenlijst van opentaal).
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$sText = " Huntelaar niet geschorst tegen AZ
Klaas-Jan Huntelaar staat op zondag 13 januari waarschijnlijk wel aan de aftrap van Ajax - AZ. Diverse media meldden woensdag dat de spits van Ajax geschorst zou zijn voor de topper, maar waarschijnlijk heeft de KNVB zich vergist.";
$aClubs = array('PSV','Feyenoord','Ajax','Groningen','Twente','Roda JC','Heerenveen','Utrecht','AZ','NAC','Vitesse','Graafschaap','VVV','NEC','Heracles','Sparta','Willem II','Excelsior');
$aResults = array();
$i = 0;
foreach ($aClubs as $sClub) {
preg_match_all("#\b" . $sClub . "\b#i", $sText, $aMatches);
$iMatches = count($aMatches[0]);
if ($iMatches > 0) {
$aResults[$sClub] = $iMatches;
}
}
print "De volgende clubs komen voor:\n";
foreach ($aResults as $sClub => $iResult) {
print $sClub . " " . $iResult . " keer\n";
}
?>
$sText = " Huntelaar niet geschorst tegen AZ
Klaas-Jan Huntelaar staat op zondag 13 januari waarschijnlijk wel aan de aftrap van Ajax - AZ. Diverse media meldden woensdag dat de spits van Ajax geschorst zou zijn voor de topper, maar waarschijnlijk heeft de KNVB zich vergist.";
$aClubs = array('PSV','Feyenoord','Ajax','Groningen','Twente','Roda JC','Heerenveen','Utrecht','AZ','NAC','Vitesse','Graafschaap','VVV','NEC','Heracles','Sparta','Willem II','Excelsior');
$aResults = array();
$i = 0;
foreach ($aClubs as $sClub) {
preg_match_all("#\b" . $sClub . "\b#i", $sText, $aMatches);
$iMatches = count($aMatches[0]);
if ($iMatches > 0) {
$aResults[$sClub] = $iMatches;
}
}
print "De volgende clubs komen voor:\n";
foreach ($aResults as $sClub => $iResult) {
print $sClub . " " . $iResult . " keer\n";
}
?>