Avatar billede walden Nybegynder
11. maj 2008 - 19:51 Der er 7 kommentarer og
1 løsning

tæl forkomsten af en bestemt streng

Jeg har en liste over navne i en txt-fil (navne.txt). Lad os sige med følgende indhold:

Lars
Lars
Larsen
Larsen
Lars
Lars
Lars
Larsen
Lars
Gitte

Nu vil jeg så tælle hvor mange gange navnet Lars forekommer. Det har jeg gjort med følgende kode:


$tekstfil = file_get_contents("navne.txt");
$antal = count(explode("$navn",$tekstfil));

hvor variablen "$navn" så i dette tilfælde er "Lars".

Mit problem er så bare, at koden åbenbart ikke kan se forskel på strengen "Lars" og første del af strengen "Larsen". Er der en måde hvorpå jeg kan løse det problem?
Avatar billede wosgam Nybegynder
11. maj 2008 - 20:41 #1
Sådan her?:

<?php
$navn = "Lars";
$linje = file("navne.txt");
for($i=0;$i<count($linje);$i++){if(strtoupper(trim($linje[$i])) == strtoupper(trim($navn))){$antal++;}}
print $antal;
?>
Avatar billede walden Nybegynder
11. maj 2008 - 21:10 #2
Ja ... det virker :-)

Tak for den hurtige reaktion. Kan jeg få dig til at komme med et "svar", så du kan få points og kan du måske sætte et par ord på hvad det er koden gør?
Avatar billede olebole Juniormester
11. maj 2008 - 21:42 #3
<ole>

Måske lidt mere 'sexy':

$tekstfil = file_get_contents("navne.txt");
preg_match_all("/\blars\b/i", $tekstfil, $a);
$antal = count($a[0]);

- og den tæller forøvrigt både 'lars' og 'Lars' med  =)

/mvh
</bole>
Avatar billede wosgam Nybegynder
12. maj 2008 - 16:20 #4
yes her
Avatar billede walden Nybegynder
12. maj 2008 - 16:34 #5
Kunne du sætte lidt ord på hvad koden gør :-)
Avatar billede wosgam Nybegynder
12. maj 2008 - 20:48 #6
<?php // Siger at vi bruger php
$navn = "Lars"; // Lægger navnet Lars ind i variablen $navn
$linje = file("navne.txt"); // Lægger linjerne fra filen ind i et array
for($i=0;$i<count($linje);$i++) // Kører alle linjerne igennem med en for-løkke
{
    if(strtoupper(trim($linje[$i])) == strtoupper(trim($navn)))// Tjekker om den nutidige linje er lig med $navn variablen, og hvis den er så:
    {
    $antal++; // Læg 1 til $antal
    }
}
print $antal; // Udskriver det endelige antal af fundne forkomster af variablen $navn
?> // Afslutter php
Avatar billede walden Nybegynder
12. maj 2008 - 20:50 #7
Så kan jeg vist ikke bede om mere ... tak igen :-)
Avatar billede mxs Nybegynder
13. maj 2008 - 10:29 #8
Hmm kunne man gøre sådan:

$line = file("text.txt");
for($i=0;$i<count($line);$i++)
{
  $a[$line]++;
}

Hvor $a er et array hvor index'et er et hel tal som beskriver forekomster af key, hvor key i dette tilfælde er navne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester