Avatar billede cybermaster Nybegynder
24. februar 2006 - 21:49 Der er 8 kommentarer og
1 løsning

Del en sætning på "midten" med pænt

Hej med jer,

Håber der er en der kan lave et lille script til mig, der skal kunne dele en sætning på midten, med dog hvor der i forvejen er et mellem rum. Hvis sætningen er mere end 20 bogstaver.

Mvh
Avatar billede michael_stim Ekspert
24. februar 2006 - 21:52 #1
function nicetrim($tekst, $laengde = 20, $tolerance = 10) // $laengde og $tolerance kan udelades
{
    $punktum  = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum
    $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum
    $mere      = "..."; // punktummer hvis mere tekst

    if (strlen($tekst) <= $laengde + $tolerance) {
        $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance
        $mere = ""; // ikke andet
    } elseif ($punktum !== false) {
        $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum
    } elseif ($mellemrum !== false) {
        $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum
    } else {
        $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over)
    }

    return substr($tekst, 0, $slut_pos) . $mere; // udskriv del + evt. punktummer
}
Avatar billede cybermaster Nybegynder
24. februar 2006 - 21:54 #2
Og den anden halvdel af tekste?
Avatar billede cybermaster Nybegynder
24. februar 2006 - 21:57 #3
kan jo klare det med en replace, men er for træt til lige at gennemskue om det er i scriptet.
Avatar billede michael_stim Ekspert
24. februar 2006 - 21:58 #4
OK, på den måde. Du vil lave et <br> for hvert 20 bogstav? I så fald, hvorfor ikke bare smide din tekst ind i en div, tabel eller lign.?
Avatar billede cybermaster Nybegynder
24. februar 2006 - 22:01 #5
function nicetrim($tekst, $laengde = 20, $tolerance = 10) // $laengde og $tolerance kan udelades
{
    $punktum  = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum
    $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum
    $mere      = "..."; // punktummer hvis mere tekst

    if (strlen($tekst) <= $laengde + $tolerance) {
        $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance
        $mere = ""; // ikke andet
    } elseif ($punktum !== false) {
        $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum
    } elseif ($mellemrum !== false) {
        $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum
    } else {
        $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over)
    }

    return substr($tekst, 0, $slut_pos); // udskriv del + evt. punktummer
}

$text = "The quick brown fox jumped over the lazy dog.";
$del_1 = nicetrim("$text");
$del_2 = ereg_replace("$del_1", "", $text);
echo "$text -->> <br>$del_1<br>$del_2";
Avatar billede cybermaster Nybegynder
24. februar 2006 - 22:01 #6
lig et svar.
Avatar billede michael_stim Ekspert
24. februar 2006 - 22:08 #7
Tag du dem bare selv. Jeg svarede jo ikke på dit spörgsmål ;o)
Avatar billede coderdk Praktikant
25. februar 2006 - 17:56 #8
Hvorfor ikke bare bruge wordwrap() ?
http://dk.php.net/wordwrap
Avatar billede cybermaster Nybegynder
03. marts 2006 - 17:28 #9
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