---
title: "Hur begränsar jag antalet ord eller tecken?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/189598-hur-begränsar-jag-antalet-ord-eller-tecken"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Danne V"
published: "2012-04-12T08:38:34.000Z"
updated: "2012-04-12T20:03:58.000Z"
replies: 15
views: 1113
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/189598-hur-begränsar-jag-antalet-ord-eller-tecken"
---

# Hur begränsar jag antalet ord eller tecken?

## #1 — Danne V, 2012-04-12T08:38Z

Har denna snutt:

```php
			if($this->description)
				echo "$this->description";
```

och skulle vilja begränsa texten som genereras.
Vet nada om php men gissar att function limit_text ska in.
Men var? Och hur?

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

## #2 — nitro2k01, 2012-04-12T08:48Z

```php
            if($this->description) 
                echo limit_text("$this->description");
```

?

Sen verkar inte denna limit_text vara en standardfunktion i PHP, utan måste definieras någonstans om den inte redan finns i koden. Då måste du hitta ett bra ställe att placera funktionen på. Det beror helt på hur kodbasen är utformad. Det kanske t ex finns en fil som heter functions.php eller liknande som inkluderas till alla sidor, där du ska lägga alla funktioner. Eller så bör den ligga någon annanstans. Ett annat problem är om $this-\>description kan innehålla t ex HTML, som kapas av på mitten av limit_text osv.

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

## #3 — metalboy, 2012-04-12T09:54Z

Är det funktionen [substr()](http://www.php.net/substr) du söker?

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

## #4 — Danne V, 2012-04-12T11:06Z

> **[metalboy skrev:](https://www.webforum.nu/p/1549508)**
>
> Är det funktionen [substr()](http://www.php.net/substr) du söker?

Kanske. När jag sökt så har den dykt upp också.
Har testat lite olika. Men, som sagt, jag vet nada om php.  :r
Skulle gärna posta all kod, men snubben som satte ihop skriptet åt mig för 6-7 år sen vill inte gärna att den plötsligt blir allmän egendom.

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

## #5 — metalboy, 2012-04-12T11:28Z

Okej, säg att du vill skriva ut de 10 första tecknen i en sträng, då gör du på följande sätt:

```php
<?php
$string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ';

echo substr($string, 0, 10); // ABCDEFGHIJ
```

Notera att denna funktion inte tar hänsyn till om du har någon HTML-kod i strängen.
Se följande exempel

```php
<?php
$string = '<b>Fetstilt text</b>';
echo substr($string, 0, 18); // <b>Fetstilt text</
```

Kolla gärna igenom exemplen i manualen.

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

## #6 — Danne V, 2012-04-12T11:30Z

> **[metalboy skrev:](https://www.webforum.nu/p/1549516)**
>
> Okej, säg att du vill skriva ut de 10 första tecknen i en sträng, då gör du på följande sätt:
>
>
>
> ```php
> <?php
> $string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ';
>
> echo substr($string, 0, 10); // ABCDEFGHIJ
> ```
>
>
>
> Notera att denna funktion inte tar hänsyn till om du har någon HTML-kod i strängen.
> Se följande exempel
>
>
> ```php
> <?php
> $string = '<b>Fetstilt text</b>';
> echo substr($string, 0, 18); // <b>Fetstilt text</
> ```
>
>
>
> Kolla gärna igenom exemplen i manualen.

Har laborerat med detta tidigare idag. Men förstår inte hur jag ska lägga in funktionen i koden ovan, dvs denna:

```php
 if($this->description) 
                echo "$this->description";
```

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

## #7 — metalboy, 2012-04-12T11:33Z

```php
if($this->description)
    echo substr($this->description, 0, 10); // Skriver ut de 10 första tecknen
```

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

## #8 — Danne V, 2012-04-12T11:47Z

> **[metalboy skrev:](https://www.webforum.nu/p/1549518)**
>
> ```php
> if($this->description)
>     echo substr($this->description, 0, 10); // Skriver ut de 10 första tecknen
> ```

Funkar kanon! Lyckades t.o.m. lägga till tre punkter efter...  :)
Tackar & bockar för hjälpen!

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

## #9 — Danne V, 2012-04-12T18:16Z

Kanske överkurs. Men hur klipper man texten utan att kapa orden?

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

## #10 — stattin, 2012-04-12T18:49Z

Kanske går att skriva en snyggare lösning

```php
if($this->description) 
    {
		$td = explode(substr($this->description, 0, 10), $this->description);
		list($plus) = explode(" ", $td[1]);
		echo substr($this->description, 0, 10).$plus;
	}
```

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

## #11 — metalboy, 2012-04-12T18:51Z

Kolla t.ex. den här funktionen: <http://se2.php.net/manual/en/function.substr.php#93963>

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

## #12 — Danne V, 2012-04-12T19:30Z

> **[stattin skrev:](https://www.webforum.nu/p/1549546)**
>
> Kanske går att skriva en snyggare lösning
>
>
> ```php
> if($this->description) 
>     {
> 		$td = explode(substr($this->description, 0, 10), $this->description);
> 		list($plus) = explode(" ", $td[1]);
> 		echo substr($this->description, 0, 10).$plus;
> 	}
> ```

Ser snyggt ut. :)
Men var/hur lägger jag in detta i befintligt kod?

Testat. Funkar skitbra! :) Takkar takkar..
(nu kan man ju inte markera TVÅ svar som dom rätta, så du få nöja dig med ett tack!)

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

## #13 — Danne V, 2012-04-12T19:31Z

> **[metalboy skrev:](https://www.webforum.nu/p/1549547)**
>
> Kolla t.ex. den här funktionen: <http://se2.php.net/manual/en/function.substr.php#93963>

Har kollat en mängd varianter, inte minst på php.net.
Problemet är alltså att jag inte vet skit om php.  :r

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

## #14 — metalboy, 2012-04-12T19:57Z

Skulle du vilja använda dig av funktionen från kommentarerna i manualen så kan du göra så här:

```php
<?php
function _substr($str, $length, $minword = 3)
{
    $sub = '';
    $len = 0;
   
    foreach (explode(' ', $str) as $word)
    {
        $part = (($sub != '') ? ' ' : '') . $word;
        $sub .= $part;
        $len += strlen($part);
       
        if (strlen($word) > $minword && strlen($sub) >= $length)
        {
            break;
        }
    }
   
    return $sub . (($len < strlen($str)) ? '...' : '');
}

// ... en massa annan kod

if($this->description)
    echo _substr($this->description, 10);
```

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

## #15 — Danne V, 2012-04-12T20:01Z

> **[metalboy skrev:](https://www.webforum.nu/p/1549551)**
>
> Skulle du vilja använda dig av funktionen från kommentarerna i manualen så kan du göra så här:

Schysst! Men Stattins svar (ovan) funkade.
Jag är oerhört tacksam för hjälpe du (och andra) har gett.   (y) (y) (y)

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

## #16 — stattin, 2012-04-12T20:03Z

> **[Danne V skrev:](https://www.webforum.nu/p/1549549)**
>
> Ser snyggt ut. :)
> Men var/hur lägger jag in detta i befintligt kod?
> 
> Testat. Funkar skitbra! :) Takkar takkar..
> (nu kan man ju inte markera TVÅ svar som dom rätta, så du få nöja dig med ett tack!)

Tack tack!
Men som sagt kanske inte det snyggaste eller smidigaste lösningen.
Fast egentligen finns det ju ingen riktigt lösning på detta om man inte har en inbyggd ordlista
Skulle det glömmas ett mellanslag (fast hur ofta händer det) så kan ju resultat bli något längre än vad man skulle vilja.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/189598-hur-begränsar-jag-antalet-ord-eller-tecken
