Avatar billede lesp Nybegynder
16. november 2007 - 12:31 Der er 22 kommentarer og
1 løsning

Lave linjeskift pr. 15. ord i et udtræk fra databasen

Lave linjeskift pr. 15. ord i et udtræk fra databasen. Hvordan?
Avatar billede jakobdo Ekspert
16. november 2007 - 12:47 #1
Det må blive noget med at løbe strengen igennem og hver gang du møder et mellemrum, tæl en counter op.
Når den counter når 15, udskriv BR eller NEWLINE, nulstil counter og kør videre.
Avatar billede lesp Nybegynder
16. november 2007 - 13:41 #2
Jeg har også prøvet at ordne med en <iframe>, men da jeg sender en id=xxx med i linket vil den ikke udskrive noget som helst.
Avatar billede jakobdo Ekspert
16. november 2007 - 13:52 #3
Noget kode ala dette:

<?php
//http://www.eksperten.dk/spm/806065

$tekst  = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, set eiusmod tempor incidunt et labore et dolore magna aliquam. Ut enim ad minim veniam, quis nostrud exerc. Irure dolor in reprehend incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.';
$tekst .= 'Duis aute irure dolor in reprehenderit in voluptate velit esse molestaie cillum. Tia non ob ea soluad incommod quae egen ium improb fugiend. Officia deserunt mollit anim id est laborum Et harumd dereud facilis est er expedit distinct. Nam liber te conscient to factor tum poen legum odioque civiuda et tam. Neque pecun modut est neque nonor et imper ned libidig met, consectetur adipiscing elit, sed ut labore et dolore magna aliquam is nostrud exercitation ullam mmodo consequet.';
$tekst .= 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.';

$counter = 0;
$tok = strtok($tekst, " ");
while($tok !== false) {
    if($counter == 15)
    {
        echo '<br />';
        $counter = 0;
    }
    echo $tok;
    $tok = strtok(" ");
    $counter++;
}

?>
Avatar billede lesp Nybegynder
16. november 2007 - 14:04 #4
Men nu hiver jeg det jo ud i én variabel!
Avatar billede jakobdo Ekspert
16. november 2007 - 14:07 #5
Ja, så smider du jo din tekst fra databasen ind i den variabel.
TÆNK NU LIDT SELV! :o)
Avatar billede lesp Nybegynder
16. november 2007 - 14:36 #6
Javel!
Avatar billede lesp Nybegynder
16. november 2007 - 14:42 #7
Hvad så hvis den skal ind i en echo"";?
Avatar billede jakobdo Ekspert
16. november 2007 - 14:53 #8
Hvad mener du?
Avatar billede coderdk Praktikant
16. november 2007 - 16:10 #9
Hvad med bare:

echo preg_replace("/(([^ ]+) ){15}/s", "\\0<br />\n", $tekst);

Med samme test-tekst som jakobdo...
Avatar billede lesp Nybegynder
16. november 2007 - 18:46 #10
Kan det ikke bare se sådan ud?

<?php
//http://www.eksperten.dk/spm/806065

$tekst  = Hiv ud fra databasen;

$counter = 0;
$tok = strtok($tekst, " ");
while($tok !== false) {
    if($counter == 15)
    {
        echo '<br />';
        $counter = 0;
    }
    echo $tok;
    $tok = strtok(" ");
    $counter++;
}

?>
Avatar billede jakobdo Ekspert
16. november 2007 - 19:45 #11
Smart kode coderdk! :o)
Avatar billede coderdk Praktikant
16. november 2007 - 20:27 #12
tak (c: regex er tasty! :D
Avatar billede lesp Nybegynder
16. november 2007 - 21:09 #13
Er der nogen som vil sætte mig ind i tingene?
Avatar billede coderdk Praktikant
16. november 2007 - 23:13 #14
$tekst = Hiv ud fra databasen;
echo preg_replace("/(([^ ]+) ){15}/s", "\\0<br />\n", $tekst);

Den indsætter et "<br />\n" efter hvert 15. ord (adskilt af mellemrum) - [^ ] betyder alle bogstaver, undtagen mellemrum + betyder 1 eller flere af dem
Avatar billede jakobdo Ekspert
17. november 2007 - 10:57 #15
coderdk: Nu testede jeg lidt på din kode, og med en tekst som indeholder NEWLINES, så vil denne være bedre:

$output = preg_replace('/(([^ \r\n]+) ){15}/', '$0<br />', $input);

Og det havde jeg selvfølgelig ikke med i min tekst til at starte med, men alligevel! :o)
Avatar billede coderdk Praktikant
17. november 2007 - 14:12 #16
Så burde den faktisk se sådan ud:

$output = preg_replace('/(([^ \r\n]+)( |\r|\n)){15}/', '$0<br />', $input);

:)
Avatar billede lesp Nybegynder
19. november 2007 - 10:29 #17
Nice! Og hvordan udskriver jeg den?
Avatar billede coderdk Praktikant
19. november 2007 - 10:44 #18
Eeh, f.eks med echo?

echo $output;

?
Avatar billede lesp Nybegynder
19. november 2007 - 10:55 #19
Men denne kode virker ikke:

$output = preg_replace('/(([^ \r\n]+)( |\r|\n)){15}/', '$0<br />', $input);
Avatar billede coderdk Praktikant
19. november 2007 - 11:12 #20
Virker:

echo preg_replace('/(([^ \r\n]+)[ \r\n]){15}/', '$0<br />', $input);

?
Avatar billede lesp Nybegynder
19. november 2007 - 11:25 #21
Nej. Den laver ikke linjeskift ved hvert 15. ord.
Avatar billede coderdk Praktikant
19. november 2007 - 11:43 #22
Weird. Prøv jakobdo's version eller min oprindelige, så ;)

echo preg_replace('/(([^ \r\n]+) ){15}/', '$0<br />', $input);

eller

echo preg_replace("/(([^ ]+) ){15}/s", "\\0<br />", $tekst);
Avatar billede lesp Nybegynder
27. november 2007 - 12:57 #23
Nice! Tak Coderdk
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