Oprettet søn. d. 13. januar 2002 kl. 17:04:53

fangel
fangel (35.469 point. Point ude: 0)

forkortelse af variabler...

Hej

jeg skal bruge en funktion der laver om på variablen $data[0]så at, hvis den er over 20 tegn lang, skære tegn 17-999999 fra og sætter ... på istedet, ligsom Eksperten gørm og hvis man holder musen over, skal den fulde texts stå der

Dea_PG

Skrevet søn. d. 13. januar 2002 kl. 17:05:29| #1

fangel
fangel (35.469 point)
hov, gørm = gør og texts = tekst

Skrevet søn. d. 13. januar 2002 kl. 17:14:54| #2

filip_b_l
filip_b_l (20.403 point)
typofree.dk
Det du mener er at du skal have en text hvor de første 20 tegn viser og som alt text hele variablen ?

$kortdata = substr (\"$data\", 0, 20);

Den her tager de først tegn af $data og ligger dem i $kortdata... alt teksten må du selv finde ud af  !!!

Skrevet søn. d. 13. januar 2002 kl. 17:17:32| #3

thaufer
thaufer (23.732 point)
//Gør så den kun viser 20 tegn
$data[0] = substr($data[0],0,20);

Skrevet søn. d. 13. januar 2002 kl. 17:17:47| #4

thaufer
thaufer (23.732 point)
ahh...too late.

Skrevet søn. d. 13. januar 2002 kl. 17:26:14| #5

fangel
fangel (35.469 point)
OK, men er der nogle der så kan gøre sådan at der kun gøre det hvis der er over 20 tegn, og så fjerner den alle tegn efter 17, og sætter ... på og en alt text

altså

if (over 20 tegn) {
  $data2 = substr (\"$data[0]\", 0, 17)...;
}
else {
$data2 = $data[0];
}

Skrevet søn. d. 13. januar 2002 kl. 17:50:45| #6

jensgram
jensgram (39.129 point)
www.jensgram.dk
Prøv denne funktion:

//  Funktion, der \"klipper\" en tekst over på det mest hensigtsmæssige sted (\".\", \" \", )

function klip($tekst, $laengde = 50, $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
}


Jens Gram - www.jensgram.dk

Skrevet søn. d. 13. januar 2002 kl. 19:53:02| #7

tipsen
tipsen (35.007 point)
Bare en tanke: Vil det ikke være muligt, at bruge \"Regular Expressions\" til at gøre dette nemt og hurtigt?

Skrevet søn. d. 13. januar 2002 kl. 23:24:22| #8

myplacedk
myplacedk (31.315 point)
Et gæt på en ereg-løsning:
$tekst = ereg_replace(\'^(.{17}).{4,}$\', \'$1\', $tekst);
Aldeles utestet... ;-)

Skrevet man. d. 14. januar 2002 kl. 14:20:19| #9

fangel
fangel (35.469 point)
det ville være bedst hvis det er en kort lille function, er der nogle der ved hvad de bruger til at ordne List.phtml her på E. der er teksten jo forkortet

Dea_PG

Skrevet man. d. 14. januar 2002 kl. 14:52:38| #10

myplacedk
myplacedk (31.315 point)
Skal jeg teste mit forslag, før du vil prøve den?
Eller kan du ikke selv \"omformulere\" den til en funktion?
Og uanset hvad der er galt, hvorfor reagerer du så slet ikke på min kommentar?

Skrevet man. d. 14. januar 2002 kl. 14:55:26| #11

myplacedk
myplacedk (31.315 point)
Jeg kan da godt lige lave det til en funktion, og rette en lille fejl jeg lige så:

function kaldmighvadduvil($tekst) {
  return ereg_replace(\'^(.{17}).{4,}$\', \'$1...\', $tekst);
}

Er det kort nok?

Vi kan da også lave den lidt mere fancy:

function kaldmighvadduvil($tekst, $maxtegn=20) {
  $lidtmindre = $maxtegn - 3;
  return ereg_replace(\'^(.{\'.$lidtmindre.\'}).{4,}$\', \'$1...\', $tekst);
}

Så kan du selv bestemme hvor lang den længste streng skal være, hvis du har lyst.

Stadig ikke testet.

Skrevet man. d. 14. januar 2002 kl. 15:37:29| #12

fangel
fangel (35.469 point)
MyPlace.dk => jeg skal lige have mit MySQL op at køre, da den skal hente strengen derfra, men jeg skal da gerne prøve på en \"flad\" streng

Dea_PG

Skrevet lør. d. 19. januar 2002 kl. 09:47:27| #13

fangel
fangel (35.469 point)
OK, nu har jeg kørt lidt test, og jeg er kommet frem til
----------
<?php
$text = \"hej alle sammen, hvordan går det ?\";
function cut($text) {
  return ereg_replace(\'^(.{17}).{4,}$\', \'$1...\', $text);
}
$kortdata = cut($text);

echo \"<a href=\\\"et eller andet ID nummer\\\" alt=\\\"$text\\\">$kortdata</a>\";
?>
ikke virker, hvis der er mange tegn, skriver den \"$1...\"
-------------

denne her virker heller ik
-------
<?php
$tekst = \"hej alle sammen, hvordan går det ? jewg har det fint\";
function cut($tekst, $laengde = 50, $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
}

$kortdata = cut($tekst);

echo \"<a href=\\\"et eller andet ID nummer\\\">$kortdata</a>\";
?>
---------

OK, jeg er kommet frem til, at jeg bare vil have en måde at tælle hvor mange tegn der er, så finder jeg selv ud af det.

Dea_PG

Skrevet lør. d. 19. januar 2002 kl. 10:07:32| #14

jensgram
jensgram (39.129 point)
www.jensgram.dk
Så skal du bruge strlen($tekst)

Skrevet lør. d. 19. januar 2002 kl. 10:58:38| #15

fangel
fangel (35.469 point)
hvad gør den, tællet tegn, eller hva\'

så man kan fx sige

if (strlen($tekst) > 20) {
  $kortdata = substr (\"$tekst\", 0, 17)...;
}
else {
  $kortdata = $tekst;
}

Skrevet lør. d. 19. januar 2002 kl. 18:01:43| #16


Skrevet lør. d. 19. januar 2002 kl. 19:32:08| #17

fangel
fangel (35.469 point)
det jeg har skrevet, er altså rigtigt, det virker eller hva\' ? jeg har ikke testet det, men det gør jeg nu

Dea_PG

Skrevet søn. d. 20. januar 2002 kl. 09:50:33| #18

jensgram
jensgram (39.129 point)
www.jensgram.dk
Nej øjeblik - sådan:

if (strlen($tekst) > 20) {
  $kortdata = substr($tekst, 0, 17) . \'...\';
} else {
  $kortdata = $tekst;
}

Skrevet søn. d. 20. januar 2002 kl. 10:05:49| #19


Skrevet søn. d. 20. januar 2002 kl. 10:55:46| #20


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger