Avatar billede rjpa Nybegynder
25. april 2003 - 09:07 Der er 14 kommentarer og
1 løsning

HTML/PHP : breakline, men hvordan?

Hej,

I går lavede jeg et lignende spm. med samme overskrift, denne gang er det bare lidt anderledes. Prøv at kikke på følgende URL:

http://oldreviews.com/reviews/comments/1

Kan du/I se hvad der er galt? Nemlig, teksten flyder ud til højre. Hvordan kan jeg undgå dette?

Du kan finde kilde koden her:

http://oldreviews.com/reviews/comments/source.phps

200 points til et virkende svar.

/rjpa
Avatar billede tangveje Nybegynder
25. april 2003 - 09:10 #1
Kig på wordwrap funktionen.

http://www.php.net/manual/en/function.wordwrap.php

Det kan desværre være et problem når du ikke har en fast bredde på din side at regne med.
Avatar billede rjpa Nybegynder
25. april 2003 - 09:14 #2
Mærkligt, i går fik jeg det til at virke med bare at bruge et "mellemrum" i, kan man ikke gøre noget andet her?
Avatar billede tangveje Nybegynder
25. april 2003 - 09:16 #3
Jo noget i denne stil kan muligvis gøre det, men det er ikke en 100% sikker metode

$text = wordwrap( $text, 80, " ", 1);
Avatar billede tangveje Nybegynder
25. april 2003 - 09:23 #4
En anden løsning kunne være at bruge CSS, som det er gjort her på ekseperten.

style="overflow:hidden;"

Prøv at sæt den på det element der indeholder din tekst, f.eks.

<td style="overflow:hidden;">

Almindelig tekst vil brydes over flere linier som normalt, mens de meget lange "ord" vil forsvinde i højre side, uden at give en scrollbar. Så er det bare hvilken løsning du foretrækker.
Avatar billede avminarm Juniormester
25. april 2003 - 09:28 #5
rjpa>> det er faktisk de færreste der vil lave et så langt ord ;o), så jeg ville ikke bekymre mig helt vildt om det. Så lange der skrives ganske normalt skulle der ikke være nogen probs.
Avatar billede rjpa Nybegynder
25. april 2003 - 09:28 #6
Avatar billede rjpa Nybegynder
25. april 2003 - 09:31 #7
tja, jeg ved ikke hvad der er bedst at gøre her, men jeg kikker lige på det. Men andre forslag er mere end velkommne.
Avatar billede ahv Nybegynder
25. april 2003 - 09:36 #8
rjpa: Du burde kunne sætte en:

style="max-width:200px;"

Så kan du selv styrer den, evt. sæt den med procent.
Avatar billede ahv Nybegynder
25. april 2003 - 09:45 #9
ellers så har tdaugaard, nu invisibleman for længe siden lavet denne lille funktion:

Du er her : Eksperten : Programmering : Script : PHP : Let\'s see what\'cha got :o) Lad os se dine EGNE nyttige custom funktioner .. :


Let\'s see what\'cha got :o) Lad os se dine EGNE nyttige custom funktioner ..    20 point fra tdaugaard
Luk annonce  Jeg synes det kunne være fedt hvis vi kunne samle en MASSE af vores egne hjemmelavede funktioner som kan være nyttige for andre, i EEN stor .php fil - tilgængelig for alle.

Det er tit at man liiige sidder og mangler en eller anden funktion - og tit ender det også med at man selv prøver at lave den, men fejler :-(

Jeg sad selv lige og skulle bruge en funktion der kunne knække mange sammenhængende tegn fra hinanden, sådan at en streng på f.eks. 500 tegn ikke fucker ens design og forcer horizontal scroll - ligesom det er her på E.

Den kan i se her:

<?php
    function break_string($str, $length = 50) {
        preg_match_all(\"/(\\w){50,}/i\", $str, $regs, PREG_PATTERN_ORDER);

        $matches = sizeof($regs[0]);
        for ($i = 0; $i < $matches; $i++) {
            $match = $regs[0][$i];
            for ($x = 0; $x < strlen($match); $x+=$length) {
                $temp .= substr($match, $x, $length) . \" \";
            }

            $str = str_replace($regs[0][$i], $temp, $str);
        }

        return $str;
    }

Denne burde lave en linie efter 50 tegn, dog vil denne ikke virke optimalt da der jo kan være flere tegn i 1024x768 end i 800x600
Avatar billede ahv Nybegynder
25. april 2003 - 09:46 #10
Der fik jeg vist copy/pastet lidt for meget.
Avatar billede ahv Nybegynder
25. april 2003 - 09:54 #11
Har lige siddet og læst lidt om max-width:

problemet er at det ikke understøttes af IE endnu, kun Opera 5.+, Netscape 6.+ og Mozilla.
Avatar billede ahv Nybegynder
25. april 2003 - 10:58 #12
Du kan på den td, som indeholder indholdet sætte denne:

style="word-wrap: break-word; width: 500px;"

Dette virker dog kun i IE.
Avatar billede avminarm Juniormester
25. april 2003 - 11:18 #13
rjpa>> læs min kommentar igen!! problemet er vel mest teoretisk?
Avatar billede sostack Nybegynder
25. april 2003 - 12:35 #14
Prøv med:
<?
function make_width($thestring, $width)
{
$thenewstring = "";
$intermediate_stringarray = explode(" ", $thestring);
for($i = 0; $i < count($intermediate_stringarray); $i++)
    {
    if((strlen($thenewstring) + strlen($intermediate_stringarray[$i])) >= $width)
    {
    $thenewstring = $thenewstring . "<br />" . $intermediate_stringarray[$i];
    } else {
    $thenewstring = $thenewstring . " " . $intermediate_stringarray[$i];
    }
}
return $thenewstring;   
}
?>

//sostack
Avatar billede rjpa Nybegynder
09. maj 2003 - 13:50 #15
takker, lukker.
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