Teller specifiek woord op website

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stijn V

Stijn V

02/01/2008 14:12:00
Quote Anchor link
Hallo,

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é!
 
PHP hulp

PHP hulp

27/11/2024 07:51:55
 
Jeffrey H

Jeffrey H

02/01/2008 14:27:00
Quote Anchor link
Het kan zo:

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
<?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 />");
?>


Zoiets dacht ik...
Gewijzigd op 01/01/1970 01:00:00 door Jeffrey H
 
Joren de Wit

Joren de Wit

02/01/2008 14:35:00
Quote Anchor link
Het kan nog even korter:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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/>';
?>
 
Jeffrey H

Jeffrey H

02/01/2008 14:47:00
Quote Anchor link
Ow, die kende ik nog niet :P
 
Stijn V

Stijn V

02/01/2008 14:49:00
Quote Anchor link
Bedankt weer! Het werkt super.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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.';
?>


maar dat werk helaas niet...
 
Jeffrey H

Jeffrey H

02/01/2008 14:53:00
Quote Anchor link
Mischien omdat de site niert meer bestaat?
Ik kom uit op:
http://www.feyenoord.nl/pages/homepage/s2/homepage.aspx
 
Stijn V

Stijn V

02/01/2008 14:59:00
Quote Anchor link
Dank je Jeffrey,

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
 

02/01/2008 15:03:00
Quote Anchor link
Wat werkt er dan niet? Das misschien ook handig om te weten :-D.
 
- SanThe -

- SanThe -

02/01/2008 15:03:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.';
?>
 
Stijn V

Stijn V

02/01/2008 15:04:00
Quote Anchor link
Dank je SanThe, dus een kwestie van puntjes weghalen :)

Bedankt!
 
Stijn V

Stijn V

02/01/2008 15:40:00
Quote Anchor link
Soory voor de bump, maar de laatste code van SanThe werkt bij mij toch niet helemaal correct...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.';
?>


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
 
- SanThe -

- SanThe -

02/01/2008 15:44:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.';
?>
 
Terence Hersbach

Terence Hersbach

02/01/2008 16:23:00
Quote Anchor link
weet niet of het er mee te maken zou kunnen hebben, maar let ook op de hoofdletters ;)
 
Stijn V

Stijn V

02/01/2008 16:25:00
Quote Anchor link
Thanx.

Ik had idd al een paar regels toegevoegd met AJAX, PSV, psv, Psv etc

Het werkt nu goed!

Stijn
 
Joren de Wit

Joren de Wit

02/01/2008 16:30:00
Quote Anchor link
Om het scriptje hoofdletterongevoeling te maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.';
?>
 
Stijn V

Stijn V

02/01/2008 16:38:00
Quote Anchor link
Ik wist dat er zoiets bestond, maar had al zoveel vragen gesteld... Super bedankt weer!
 
Joren de Wit

Joren de Wit

02/01/2008 16:40:00
Quote Anchor link
Vragen stellen staat natuurlijk altijd vrij! Het is veel dommer om met je vragen te blijven zitten...

Natuurlijk wel eerst altijd even zelf zoeken of je een antwoord kunt vinden ;-)
 
TJVB tvb

TJVB tvb

02/01/2008 16:56:00
Quote Anchor link
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.
 
Joren de Wit

Joren de Wit

02/01/2008 17:08:00
Quote Anchor link
TJVB schreef op 02.01.2008 16:56:
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.
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...

Vandaar mijn keuze om het pas bij de substr_count() functie toe te passen ;-)
 
Arend a

Arend a

02/01/2008 17:56:00
Quote Anchor link
Dit scriptje haalt alle clubs uit de eredivisie een tekst, en print ze apart.

De kern van het verhaal is dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
preg_match_all("#\b" . $sClub . "\b#i", $sText, $aMatches);
?>



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)
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
<?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";
}


?>
 



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.