---
title: "Visa 50 första orden ur text."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/16514-visa-50-första-orden-ur-text"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Pudolf"
published: "2001-12-31T16:30:00.000Z"
updated: "2002-01-02T20:23:00.000Z"
replies: 7
views: 271
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/16514-visa-50-första-orden-ur-text"
---

# Visa 50 första orden ur text.

## #1 — Pudolf, 2001-12-31T16:30Z

Hallå,

Har en kolumn i en MySQL-databas som heter Text, nu undrar jag om man med PHP kan visa de t ex 50 första orden (kanske bara går med tecken?) ur den texten men oxo att den "avrundar" eller slutar visa efter nästa kommande punkt!

Alltså, jag vill jag att den ska visa de t ex 50 första orden, men dock fortsätta visa resten tills nästa punkt kommer.

T ex om det hade vart 3 första orden så vill jag att den då visar:

```
Pelle åt en glass igår.

- istället för

Pelle åt en
```

Men det kanske bara går/går bättre med tecken istället för ord?

Tacksam för svar!

\[Redigerat av Pudolf den 31 dec 2001\]

Permalänk: https://www.webforum.nu/p/16514

## #2 — Gaski, 2002-01-01T11:15Z

Så här kan man göra:

```
$i = 0;
$punkt = FALSE;
$ord = split(" ",$STRÄNGEN_MED_TEXT);
while($punkt == FALSE) {
  echo " ".$ord[$i];
  if($i >= 50 && ereg("\.",$ord[$i])) 
    $punkt = TRUE;
  $i++;
}
```

Jag säger inte att det är det bästa men det är det sättet jag hade gjort det på...

Permalänk: https://www.webforum.nu/p/325536

## #3 — Pudolf, 2002-01-01T14:49Z

Tack, har testat lite med hur jag ska lägga in koden. Letade tidigare efter tutorials på hur man gör nyhetssystem och hittade den här enkla, som jag nu testar på. Men jag fattar inte riktigt var jag ska placera kodsnutten du skrev.

Och angående koden nedan, där det står $rows\[1,2,3 osv\], går det inte att använda själva namnet som man har i databsen, t ex rubrik, text, datum etc?

```
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<?php
//connect using your hostname , username and password. 
$connection = mysql_connect("localhost" , "namn" , "lösen");
//select the news database
$db = mysql_select_db("newstest" , $connection);
//this is our SQL query , note we are ordering by the submitted date
//and setting a limit of ten items
$query = "SELECT * FROM news ORDER BY datum DESC LIMIT 10";
//execute the query
$result = mysql_query($query);
//start creating our table
echo ("<table border = '0' width = '90%'>");
//loop through rows in the database
while ($rows = mysql_fetch_row($result))
{
//in the first row we display the title ($rows[1]) and the author $rows[3]
echo ("<tr bgcolor='violet'><td>$rows[1]</td><td>author : $rows[3]</td></tr>");
//in the next row we display the description which is $rows[2]
echo ("<tr><td colspan ='2' bgcolor='lavender'>$rows[2]</td></tr>");
//finally we display the url which is rows[5] and the submitted date which is rows[4]
echo ("<tr bgcolor='violet'><td><a href='$rows[5]'>$rows[5]</a></td><td>Submitted on : $rows[4]</td></tr>");
}
//finish or table
echo "</table>";
?>
</body>
</html>
```

Obs: jag har inte skrivit koden själv, hitta den på tutorialsida.

Vore schysst om frågorna kunde besvaras :)

Tack på förhand! (gott nytt år förresten)

\[Redigerat av Pudolf den 01 jan 2002\]

Permalänk: https://www.webforum.nu/p/325537

## #4 — Gaski, 2002-01-01T22:52Z

Antar att det är beskrivningen som du vill förkorta till 50 ord. Det är $rows\[2\]. Så där det står:

```
echo ("<tr><td colspan ='2' bgcolor='lavender'>$rows[2]</td></tr>");
```

Kan du skriva:

```
echo ("<tr><td colspan ='2' bgcolor='lavender'>");
$i = 0;
$punkt = FALSE;
$ord = split(" ",$rows[2]);
while($punkt == FALSE) {
echo " ".$ord[$i];
if($i >= 50 && ereg("\.",$ord[$i])) 
$punkt = TRUE;
$i++;
}
echo ("</td></tr>");
```

Testa om det fungerar...

Permalänk: https://www.webforum.nu/p/325538

## #5 — Pudolf, 2002-01-02T11:07Z

Tack för koden, får dock ett felmeddelande när jag lägger in den:

```
Fatal error: Maximum execution time of 30 seconds exceeded in C:\Inetpub/visa.php on line 32
```

Det växlar mellan fel på line 30-34.
Det är dessa rader som är 30-34:

```
while($punkt == FALSE) {
echo " ".$ord[$i];
if($i >= 50 && ereg("\.",$ord[$i])) 
$punkt = TRUE;
$i++;
```

Några förslag?
Tack,

Permalänk: https://www.webforum.nu/p/325539

## #6 — Gaski, 2002-01-02T16:05Z

Detta uppstår antagligen när $rows\[2\] innehåller färre än 50 ord.

På någon sett måste du sätta en limit på while satsen så att den inte fortsätter i all evighet. Förutsettningen nu är att det 50 ordet eller efter innehåller en punkt. Är det däremot bara 49 ord eller färre fortsätter while satsen i all evighet...

du skulle kunna ersätta

```
while($punkt == FALSE) {
```

med

```
while($punkt == FALSE &#0124;&#0124; $i>=60) {
```

men då struntar den i om det är någon punkt efter 60 ord utan avbryter där direkt. Men är det däremot en punkt i 54 ordet kommer den att sluta där.

Vad tror du om det?

Permalänk: https://www.webforum.nu/p/325540

## #7 — Pudolf, 2002-01-02T16:13Z

Okej, tack.

Så om jag har 500 istället för 60

```
while($punkt == FALSE &#0124;&#0124; $i>=[b]500[/b]) {
```

Så bör ju allt fungera, om jag då inte har nån tex över 500 ord?
Eller segar den mycket om man har hög siffra?

Permalänk: https://www.webforum.nu/p/325541

## #8 — Fuel, 2002-01-02T20:23Z

if(strlen($row\[msg\]) \>= 500){ 
$row\[msg\] = substr($row\[msg\], 0, 499) . "...";}

Permalänk: https://www.webforum.nu/p/325542

---

Tråden på webben: https://www.webforum.nu/amne/php/16514-visa-50-första-orden-ur-text
