Avatar billede hobbittend Novice
18. oktober 2011 - 22:40 Der er 15 kommentarer og
1 løsning

Gæstbog: tekstombrydning

Hej.

jeg sidder og roder med at lave en gæstebog.
Mit problem nu er, at hvis man eksempelvis indtaster en besked bestående af ét enkelt "ord" bestående af 800 tegn, så bliver den linje meget lang, og ødelægger opsætningen af hjemmesiden fuldstændig.

Hvordan forhindrer jeg bedst muligt, at linjer bare fortsætter langt ud til højre?
Avatar billede olebole Juniormester
18. oktober 2011 - 22:59 #1
<ole>

Forkast indlægget!

Et ord på 800 tegn giver ikke mening på noget sprog. Der er en anden dagsorden for et indlæg af den karakter. Drop det og brug din kostbare tid på reelle problemer  *o)

/mvh
</bole>
Avatar billede hobbittend Novice
19. oktober 2011 - 08:09 #2
Du har fat i en pointe der.
Hvordan tjekker jeg længden på ordene?

strlen finder jo længden på det hele. er vi ude i noget med at finde frem til det første mellemrum her?

Kender kun den procedure i VB.net...
Kan du hjælpe mig her? =)
Avatar billede majbom Novice
19. oktober 2011 - 18:01 #3
jeg tror ikke der er en specifik funktion der returnerer længden af det længste ord i en streng, men du kunne vel explode strengen ved mellemrum og sorte arrayet så det længste ord kommer først?
Avatar billede olebole Juniormester
19. oktober 2011 - 18:23 #4
Jeg kender heller ikke en PHP funktion, der kan, så du er nok nødt til at gøre, som splazz skriver.

I en chat, hvor folk udelukkende kommer for at skrive, kunne det måske være et performance problem. En gæstebog skriver måske hver 20. besøgende i, så det bør ikke være noget problem her  =)


$arr = explode(" ", $str);
for ($i=0,$j=count($arr); $i<$j; $i++) {
    if (strlen($arr[$i])>=50) {
        // Afbryd indsættelse
    }
}

Avatar billede danco Nybegynder
19. oktober 2011 - 22:48 #5
Derudover kan man måske have en mening omkring hvordan de design er bygget op hvis du på den måde er afhængig af tekst layouttet.

I min verden lyder det ikke til at være et PHP problem men et CSS problematik.
Hvis du lader teksten bliver indsat i en division med en bredde vil teksten automatisk blive rykket ned på næste linje når bredden er nået. Så jeg kan ikke se hvor problematikken ligger.
Avatar billede olebole Juniormester
20. oktober 2011 - 01:36 #6
@danco: Det er fordi, du tager fejl. Det er ikke et CSS problem  =)

Hvis du har en fast bredde på et element, og du fylder et ord på 8000 tegn ind i elementet, er der ikke noget, der rykker ned på næste linje.
Avatar billede danco Nybegynder
20. oktober 2011 - 09:03 #7
Argh , jeg undskylder, jeg fik vidst lige læst lidt for hurtigt.
Jeg havde ikke lige fanget den lille detalje at det var ét ord på 8000 tegn.
Avatar billede hobbittend Novice
20. oktober 2011 - 16:57 #8
Den kode du skrev Olebole virker desværre ikke....
Den returnerer ikke noget...

Hvad kan det skyldes?
Avatar billede majbom Novice
20. oktober 2011 - 18:37 #9
den skal jo heller ikke returnere noget, eller det har ole i hvert fald ikke skrevet.

der hvor der står "// Afbryd indsættelse", skal du smide noget kode ind der sørger for at indlægget ikke bliver gemt...
Avatar billede hobbittend Novice
20. oktober 2011 - 19:00 #10
nej nej...
Det har jeg selvfølgelig også gjort :) og har også ændret "$str" til den variabel jeg vil tjekke...
Avatar billede olebole Juniormester
20. oktober 2011 - 19:23 #11
Jamen, så virker den vel også?  =)
Avatar billede olebole Juniormester
20. oktober 2011 - 19:28 #12
Dette funker i hvertfald helt fint - prøv det selv i et tomt dokument:


<?php
$str = 'blabla bla bla blabla blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bla bla';
$arr = explode(" ", $str);
for ($i=0,$j=count($arr); $i<$j; $i++) {
    if (strlen($arr[$i])>=50) {
        print "Afbryd indsættelse p.gr.a. dette ord:<br>\r\n".$arr[$i];
        break;
    }
}
?>


Avatar billede hobbittend Novice
21. oktober 2011 - 23:01 #13
Det virkede pludselig alligevel...
Ved ikke hvad der gik galt :S

Tak for hjælpen Ole...

Smid lige et svar =)
Avatar billede olebole Juniormester
21. oktober 2011 - 23:18 #14
Ellers tak, jeg samler ikke points. Spørg evt. andre, der kan være aktuelle - og ellers lægger du bare et svar selv og accepterer  =)
Avatar billede majbom Novice
22. oktober 2011 - 17:06 #15
springer over...
Avatar billede hobbittend Novice
22. oktober 2011 - 18:29 #16
jeg tager dem selv =)
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