Avatar billede Slettet bruger
12. september 2003 - 21:13 Der er 20 kommentarer og
1 løsning

udtræk af de første ord

Jeg har en database som jeg trækker noget tekst og et billede ud fra. Hvordan gør jeg hvis jeg vil have ca. de 100 første ord af teksten trukket ud, og så mit billede og så dernæst den resterende tekst....?

Det skal gøres således pgr. mit layout.
Avatar billede Slettet bruger
12. september 2003 - 21:25 #1
et eksempel på hvordan jeg gerne vil have det til at se ud kan ses her: http://www.ttheil.dk/eksperten/test.htm
Avatar billede fangel Nybegynder
12. september 2003 - 21:29 #2
enten kan det klares direkte i queryet - ellers kan det klares senerehen i PHP

funktion til at klare det i php

---
<?php

function cutStr($str, $cutAfter, $precision = 10){
  if(strlen($str) < $cutAfter){
    $returnStr = $str;
  }
  else{
    $returnStr = substr($str, 0, $cutAftet + $precision);
    $returnStr = substr($str, 0, strrpos($ReturnStr, " ")) . "...";
    if(strlen($returnStr) > ($cutAfter - $precision)){
      $returnStr = substr($str, 0, $cutAfter) . "...";
    }
  }
  return $returnStr;
}

$string = "jeg en gård mig bygge vil - den skal være god og stor";
echo cutStr($string, 15, 3);

?>
---

funktionen skal have disse tre parametre (sidste kan dog undlades)

1) en streng
2) efter hvor mange tegn skal der klippes
3) hvor stor skal precisionen være? (den klipper ved mellemrum, hvor stort et stykke af strengen skal der søges i - stanrad er +/1 10 tegn fra der hvor der blev søgt

Morten
Avatar billede fangel Nybegynder
12. september 2003 - 21:34 #3
hov - så ikke at du også skal have den sidste del af strengen også...

sådan her finder du resten

---
//funktionen

$string = "jeg en gård mig bygge vil - den skal være god og stor";
$start =  cutStr($string, 15, 3);
$end = substr($string, strlen($start) + 1);

echo $start . " [CUT] " . $end;
---

Morten
Avatar billede Slettet bruger
12. september 2003 - 21:43 #4
du mener så det samlede resultat vil se således ud ??

<?php

function cutStr($str, $cutAfter, $precision = 10){
  if(strlen($str) < $cutAfter){
    $returnStr = $str;
  }
  else{
    $returnStr = substr($str, 0, $cutAftet + $precision);
    $returnStr = substr($str, 0, strrpos($ReturnStr, " ")) . "...";
    if(strlen($returnStr) > ($cutAfter - $precision)){
      $returnStr = substr($str, 0, $cutAfter) . "...";
    }
  }
  return $returnStr;
}

$string = "jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor";
$start =  cutStr($string, 10, 3);
$end = substr($string, strlen($start) + 1);

echo $start . " <img src='foto.jpg'> " . $end;


?>
Avatar billede fangel Nybegynder
12. september 2003 - 21:44 #5
jep...

er ikke testet - kan jeg lige gøre

Morten
Avatar billede ztyxx Nybegynder
12. september 2003 - 21:45 #6
Avatar billede Slettet bruger
12. september 2003 - 21:47 #7
Avatar billede Slettet bruger
12. september 2003 - 21:50 #8
der mangler teksten før foto
Avatar billede fangel Nybegynder
12. september 2003 - 21:52 #9
sådan her...

<?php

function cutStr($str, $cutAfter, $precision = 10){
  if(strlen($str) < $cutAfter){
    $returnStr = $str;
  }
  else{
    $returnStr = substr($str, 0, ($cutAfter + $precision));
    $returnStr = substr($str, 0, strrpos($returnStr, " ")) . "...";
    if(strlen($returnStr) < ($cutAfter + $precision)){
      $returnStr = substr($str, 0, $cutAfter) . "...";
    }
  }
  return $returnStr;
}

$string = "jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor jeg en gård mig bygge vil - den skal være god og stor";
$start =  cutStr($string, 40, 3);
$end = substr($string, strlen($start) - 3);

echo $start . " <img src='foto.jpg'> " . $end;

?>

nu virker det...

Morten
Avatar billede Slettet bruger
12. september 2003 - 22:03 #10
det er som om den stadig deler ordene op. for et bogstav enten før eller efter foto fra samme ord se http://www.ttheil.dk/eksperten/test.php
Avatar billede fangel Nybegynder
12. september 2003 - 22:05 #11
hmmm - mæreligt, skriver du lige hele kode?

Morten
Avatar billede Slettet bruger
12. september 2003 - 22:08 #12
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php

function cutStr($str, $cutAfter, $precision = 10){
  if(strlen($str) < $cutAfter){
    $returnStr = $str;
  }
  else{
    $returnStr = substr($str, 0, ($cutAfter + $precision));
    $returnStr = substr($str, 0, strrpos($returnStr, " ")) . " ";
    if(strlen($returnStr) < ($cutAfter + $precision)){
      $returnStr = substr($str, 0, $cutAfter) . " ";
    }
  }
  return $returnStr;
}

$string = "Mest skyet og lidt regn flere steder, men i Vestjylland opklaring, der i aften og i nat breder sig østpå til det meste af landet. Stedvis tåge og laveste temp. mellem 5 og 12 grader. Svag til frisk vind omkring nordvest. Lørdag tørt vejr med en del sol, men på Bornholm om formiddagen endnu skyet vejr med lidt regn. Højeste temp. mellem 17 og 22 grader, og svag til jævn vind fra nordvest og nord.";
$start =  cutStr($string, 100, 3);
$end = substr($string, strlen($start) - 3);

echo $start . " <img src='foto.jpg'> " . $end;

?>

</body>
</html>
Avatar billede fangel Nybegynder
12. september 2003 - 22:13 #13
ændre

strlen($start) - 3);

til

strlen($start) - 1);

før skulle der jo fjernes 3* "...", nu er det kun 1* " "

Morten
Avatar billede Slettet bruger
12. september 2003 - 22:20 #14
ja det hjalp. takker du får dine point nu. Men kan man ikke gøre så den ikke deler midt i et ord.??
Avatar billede fangel Nybegynder
12. september 2003 - 22:24 #15
den burde tage højde for det - prøv at set precision til fx 10 - burde virke

Morten
Avatar billede Slettet bruger
12. september 2003 - 22:29 #16
øh den er på 10. det hjælper ikke jeg har prøvet at hæve og sænke tallet men hjælper ikke. ingen forskel
Avatar billede fangel Nybegynder
12. september 2003 - 22:37 #17
ok - så ved jeg det ikke lige - er det konsekvent fx 1 bogstav inde i et ord? for har ikke lige tænkt over om jeg skal huske at tage højde for sådan noget

Morten
Avatar billede Slettet bruger
12. september 2003 - 22:43 #18
nej det er forskelligt. det er der ikke noget at gøre ved. keg roder bare lidt med det og findder en løsning. tak for hjælpen
Avatar billede fangel Nybegynder
12. september 2003 - 22:53 #19
ok...

Morten
Avatar billede detox Nybegynder
12. september 2003 - 23:11 #20
Du kan osse bare trække begge tekststykker ud med den samme query og så sætte billedet ind i midten:

SELECT SUBSTRING_INDEX( tekst,  ' ', 100  ) str1, SUBSTRING( tekst, length( SUBSTRING_INDEX( tekst,  ' ', 100  )  )  + 1  ) str2
FROM  tabel
Avatar billede detox Nybegynder
12. september 2003 - 23:13 #21
Du kan måske endda trække billedet ud med samme forespørgsel.
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