[PHP]Aantal woorden tellen

Pagina: 1
Acties:
  • 452 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 6026

Topicstarter
Ik zit met een probleempje. Ik wil graag dat gebruikers op mijn site een maximaal aantal woorden mag gebruiken.

Aantal letters weet ik hoe dat moet, maar dat wil ikniet. Wie weet of dit kan en als het kan hoe dit moet.

Alvast hartelijk bedankt.

Acties:
  • 0 Henk 'm!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

ik heb hier ooit mee zitten spelen in javascript (zie hieronder voor het resultaat). Beide functies werken en zou je zonder al te veel problemen moeten kunnen omzetten naar PHP.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function tellen1(f) {
    tekst = f.invoer.value;
    woordArr = tekst.match(/\w+/g);
    alert ('aantal woorden = ' + woordArr.length);
}

function tellen2(f) {
    tekst = f.invoer.value;
    n = 0;
    c2 = tekst.charAt(0);
    re = /\w/
    for (i=0; i<tekst.length; i++) {
        c1 = tekst.charAt(i);
        if ((!re.test(c1)) && (re.test(c2))) n++;
        c2 = c1;
    }
    alert('aantal woorden = ' + n);
}

Today's subliminal thought is:


Acties:
  • 0 Henk 'm!

  • Norjee
  • Registratie: April 2000
  • Niet online
Zou dit ook werken??
code:
1
2
3
$woorden=explode(" " , $input_string); //elk woord is nu elemant van array
$aantal_woorden=count($input_string);
unset($woorden);


Niet zo moeilijk toch Afbeeldingslocatie: http://tweakers.net/g/forum/g/smilies/smile.gif

Acties:
  • 0 Henk 'm!

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 19:54

johnwoo

3S-GTE

Norjee: ja, dat is inderdaad het makkelijkst, maar als iemand nou eens 10000 woorden typt? Als je daar een array van gaat bouwen ben je best veel geheugen kwijt! Ik denk dat je beter het aantal spaties of newlines (dus dat je een max. aantal regels hebt) kunt tellen...

Specs | Toyota MR2 Turbo


Acties:
  • 0 Henk 'm!

Anoniem: 6026

Topicstarter
Bedankt iedereen. Ik denk dat ik de oplossing van Norjee ga gebruiken. Aangezien men toch maximaal 300 woorden mag gebruiken.

Thanx all.

Acties:
  • 0 Henk 'm!

  • tom kuipers
  • Registratie: Juli 1999
  • Laatst online: 23-02 12:57
Je zou een regulaire expressie kunnen bouwen die elk woord gaat vervangen door een spatie. En de nieuwe string bevat dan gewoon het aantal spaties als er woorden in zitten???

Acties:
  • 0 Henk 'm!

Anoniem: 1265

kan je niet met behulp van
strlength substring en een forloop
het aantal spaties tellen,
spaties + 1 = aantalwoorden
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function telWoorden($var) {
  $flag = 0;
  $aantalwoorden = 1;
  $aantalchars = strlength($var);
  for($i=0; $i <= $aantalchars; $i++) {
    if(substr($var,$i,1) == ' ' && $flag != 1) {
       $flag = 1;
       $aantalwoorden += 1;
    }else{
       $flag = 0;
    }
  }
  return aantalwoorden;
}


geen idee of het werkt though Afbeeldingslocatie: http://tweakers.net/g/forum/g/smilies/smile.gif

zo, nu vangt ie volgens mij ook dubbele spaties op.

Acties:
  • 0 Henk 'm!

Anoniem: 4010

En stel nu een dat iemand het volgende typt:

IkbenDennisenikgaditsysteempjeeenbeetjekapotmaken

ik ga maar niet verder anders verkloot ik de LayOut van deze thread, maar het is wel duidelijk wat ik bedoel denk ik.

Acties:
  • 0 Henk 'm!

Anoniem: 6026

Topicstarter
Dan hebben we een probleem, maar kan je daar wat tegen doen?? Volgens mij niet.

Acties:
  • 0 Henk 'm!

Anoniem: 6026

Topicstarter
Dit moet de code zijn:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function telWoorden($var) {
  $flag = 0;
  $aantalwoorden = 1;
  $aantalchars = strlen($var);
  for($i=0; $i <= $aantalchars; $i++) {
      if(substr($var,$i,1) == ' ' && $flag != 1) {
             $flag = 1;
             $aantalwoorden += 1;
      }else{
             $flag = 0;
      }
  }
  echo $aantalwoorden;
}


PS.
Bedankt voor je hulp Snow-in-a-can

Acties:
  • 0 Henk 'm!

Anoniem: 4010

HPC> je kan er wat aan doen, je kan behalve een maximaal aantal woorden ook een maximaal aantal tekens afspreken.

code:
1
2
3
4
5
6
7
if (aantal woorden is groter dan x) {
      doe iets wat dan moet
} else if (aantal tekens is te groot) {
      doe iets wat nu moet
} else {
      alles is ok, mooi zo ga verder
}

Acties:
  • 0 Henk 'm!

Anoniem: 6026

Topicstarter
Tja, dat is zo. Dom dat ik daar niet eerder aan had gedacht.


Thanx Dennis

Acties:
  • 0 Henk 'm!

Anoniem: 1265

waarom echo ?
als je nou doet
$aantalwoorden = telWoorden($text);
gebeurd er niks.
als je return in de functie zet wel.
en als je het toch direct wil echo'en kan je doen
echo telWoorden($text);
Pagina: 1