Avatar billede webweaver Praktikant
02. oktober 2005 - 08:16 Der er 10 kommentarer og
1 løsning

Tælle bogstaver i ord

Hej eksperter :D

Hmm jeg har lidt problemer, jeg er ved at kode en lille avanceret ord-censur, og jeg har brug for at tælle nogle ord's antal karaktere. Altså for eksempel, skole = 5 bogstaver, hus = 3.

Jeg troede jeg kunne bruge strlen(count_chars...), men jeg kan nu ikke rigtig få den til at virke. Jeg kan kun få den til at skrive tallet 5, ligemeget om ordet er på 10, 3 eller noget antal bogstaver. Jeg bruger option 0 til formålet.

Eksempel:

$count_chars = strlen (count_chars ($ord_censur, 0));

Som sagt, det virker ikke. Er der nogen der kan fortælle mig hvordan det skal gøres?

På forhånd tak :)

Mvh Lasse Jensen
Avatar billede nielle Nybegynder
02. oktober 2005 - 09:23 #1
Hvad skal et ord som "Eksperten" give? Her er der jo 3 e'er, og et af dem er endda et stort E.
Avatar billede gf Nybegynder
02. oktober 2005 - 09:24 #2
$antal = strlen($ord_censur);

mvh gf
Avatar billede gf Nybegynder
02. oktober 2005 - 09:25 #3
glem mit svar, jeg fik (igen) ikke læst ordentligt :)

mvh gf
Avatar billede horsmark Nybegynder
02. oktober 2005 - 09:27 #4
$sText = "Der var engang en skole der i starten var et hus med rødt tegl";

$aWords = explode(" ", $sText);

foreach($aWords as $sWord){
    print "Ordet <b>". $sWord ."</b> er på ". strlen($sWord) . " bogstaver<br>";
}
Avatar billede stalle Nybegynder
02. oktober 2005 - 09:35 #5
Altså, hvis ordet står alene, så kan du ligeså godt bare bruge strlen på ordet.
Hvis du vil bruge count_chars bliver du nødt til at behandle din $count_chars bagefter.
count_chars laver nemlig et array (derfor du altid får 5).

Så følgende kan ligeså godt bruge, såfremt ordet er alene i strengen.

$count_chars = strlen($ord_censur);
Avatar billede webweaver Praktikant
02. oktober 2005 - 11:21 #6
Tak Horsmark. :) Jeg kunne helt klart godt bruge noget af det du kom op med det. Meget simpelt faktisk :) Men alligevel så driller det, fordi det er ikke en normal tekst streng, den skal arbejde på. Det er noget input hevet ud af DB, og ordene som står der, har ingen mellemrum imellem sig eller noget. Så nu har jeg siddet og arbejdet på det, og kommet frem til det jeg mener er den rigtige måde. Men det driller alligevel lidt.

Hvis I kigger her, så kan I se at den skriver "Ordet er på 0 bogstaver" under hvert ord. Det skal den jo ikke! Hvordan kan jeg fjerne det? Og hvorfor gør den det?

http://www.webweaver.dk/yes.php

Her kan I se den kode jeg har bikset sammen.

http://pastebin.com/380337

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede nielle Nybegynder
02. oktober 2005 - 11:53 #7
Du skal *ikke* sætte et mellemrum bagerst i strengen:

$conn = mysql_connect("*******","********","********") or die(mysql_error());
mysql_select_db("**********") or die(mysql_error());
                               
$foresp = mysql_query("SELECT ord FROM ord_censur ORDER by id ASC") or die(mysql_error());
                               
while ($data = mysql_fetch_array($foresp))
{
    $ord_censur_split = explode(" ", $data['ord']);
                               
    foreach ($ord_censur_split as $ord_censur_split_done)
    {
        print "Ordet <b>".  $ord_censur_split_done ."</b> er på ". strlen( $ord_censur_split_done) . " bogstaver<br>";
    }
}
Avatar billede horsmark Nybegynder
02. oktober 2005 - 12:16 #8
godt at det kunne bidrage til den endelige løsning.. virker det som det skal nu ?
Avatar billede webweaver Praktikant
02. oktober 2005 - 16:59 #9
Jeps, tak nielle, det var løsningen :) Troede ellers der skulle et mellemrum til, som explode kunne bruge til at se hvornår den skulle dele strengen.

Og Yesh horsmark, det virker som det skal nu :) Dog er systemet jo ikke færdigt ;) Det var kun en del af det, nu skal det sættes sammen med selve ord_censureringen og så videre. Det kan måske godt blive lidt tricky, men hvis der er problemer, så vender jeg tilbage ;) :D

Tak for hjælpen alle :D

Med venlig hilsen Lasse Jensen
Avatar billede nielle Nybegynder
02. oktober 2005 - 17:08 #10
Problemet var at hvis du sætter et mellemrum i slutningen og derefter splitter på netop et mellemrum, ja så får du faktisk en ekstra streng ude af det - nemlig en streng af længde nul:

explode(" ", "to ord") bilver til "to", "ord"
explode(" ", "to ord ") bliver til "to", "ord", ""
Avatar billede webweaver Praktikant
02. oktober 2005 - 17:51 #11
Nu når du nævner det, kan jeg egentlig godt se det ;) Det vil jeg huske til en anden gang :D

Men jubii, så blev jeg færdig med scriptet :) Havde egentlig ikke troet jeg kunne finde ud af at lave det sidste selv, men det lykkedes :) Wee.  Hehe..
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

IT-JOB