Avatar billede mrbs Nybegynder
07. marts 2007 - 15:35 Der er 12 kommentarer og
1 løsning

afkorte en string

Hej

Hvordan afkorter man en string med php?

jeg har forsøgt at bruge preg_replace, men kan ikke helt finde ud af  at skrive de rigtige parametre...
Avatar billede coderdk Praktikant
07. marts 2007 - 15:39 #1
Avatar billede coderdk Praktikant
07. marts 2007 - 15:40 #2
Eller med preg_replace, ca 40 tegn:

$forkortet = preg_replace( "/^(.{40}.*\b)/s", "\\1...", $tekst );
Avatar billede mrbs Nybegynder
07. marts 2007 - 15:43 #3
substr er selvfølgelig det letteste, men kan man få den til at beskære ved et helt ord?
Avatar billede wordwrap Nybegynder
07. marts 2007 - 15:50 #4
Avatar billede coderdk Praktikant
07. marts 2007 - 15:52 #5
strange_76, wordwrap afkorter jo ikke, den deler den op og indsætter linjeskift ;P

mrbs, Nej, substr kan ikke skære ved et ord, det skulle den preg_replace jeg har skrevet gøre :)
Avatar billede wordwrap Nybegynder
07. marts 2007 - 15:56 #6
den havde jeg jo ik lige tænkt på.. jeg trækker mig bare igen så ;-)
Avatar billede mrbs Nybegynder
08. marts 2007 - 19:58 #7
Hej!

Jeg er faktisk kommet frem til at preg_replace løsningen er den bedste, men den virker ikke i den form den står i der...

Jeg kan ikke helt overskue parametrene i den... :(

Sådan har jeg brugt den:
$nytekst = preg_replace( "/^(.{40}.*\b)/s", "\\1...", $postSvar[tekst] );

Men den spytter samme mængde tekst ud uanset..

Mads
Avatar billede mrbs Nybegynder
08. marts 2007 - 19:59 #8
$postSvar[tekst] er det udtræk jeg får af databasen, og den er helt ok!
Avatar billede mrbs Nybegynder
08. marts 2007 - 20:08 #9
en søgning gav mig dette brugbare resultat :)

function short_text($text, $length=360) {
        if (strlen($text) > $length) {
                $pattern = '/^(.{0,'.$length.'}\\b).*$/s';
                $text = preg_replace($pattern, "$1...", $text);
        }
        return $text;
}
Avatar billede mrbs Nybegynder
08. marts 2007 - 20:10 #10
Vil coderdk have point for god hjælp?
Avatar billede mrbs Nybegynder
08. marts 2007 - 20:16 #11
...

Bare for ordens skyld må jeg have det på det rene at det vel var " .*$/s " der løser problemet, dan den tger sig af den lille rest af et ord der evt. bliver tilbage... ikke ??
Avatar billede coderdk Praktikant
09. marts 2007 - 01:08 #12
Nah, nap dem selv :)
Avatar billede mrbs Nybegynder
09. marts 2007 - 12:18 #13
Det gør jeg så!

Takker
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