---
title: "Räkna antal tecken i en sträng"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/43827-räkna-antal-tecken-i-en-sträng"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "peronet"
published: "2002-05-15T15:46:10.000Z"
updated: "2003-08-06T11:57:56.000Z"
replies: 20
views: 864
page: 1
pages: 2
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/43827-räkna-antal-tecken-i-en-sträng"
---

# Räkna antal tecken i en sträng

_Sida 1 av 2._

## #1 — peronet, 2002-05-15T15:46Z

Hur får jag reda på hur många tecken följande sträng innehåller?
$string = "jag heter olle och är 7 år gammal";

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

## #2 — Rödalacket, 2002-05-15T15:58Z

[strlen](http://www.php.net/manual/en/function.strlen.php)

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

## #3 — peronet, 2002-05-15T16:01Z

danke. hittade det precis.. :)

tack =)

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

## #4 — peronet, 2002-05-15T16:05Z

en fråga till...

for ($j=1;$j \<=$antal;$j++) {

$sender = explode(";", $amne\[$j\]);
if ($sender) {
$temp = strlen($sender);
print "\<B\>TEMP: \</B\> $temp \<BR\>";
print "\<B\>Sender: \</B\> $sender\[0\] \<BR\>";
print "\<B\>Ämne: \</B\> $amne\[$j\] \<BR\>";
print "\<B\>Datum:\</B\> $datum\[$j\] \<BR\>";
print "\<B\>Från: \</B\> $from\[$j\] \<BR\>";
print "\<B\>Till: \</B\> $till\[$j\] \<BR\>\<BR\>";
print "$mailet\[$j\]";
print "\<BR\>\<BR\>\<BR\>";
}

ger...:

TEMP: 5 
Sender: SENDER=TEST 
Ämne: SENDER=TEST; MESSAGE=hejsan hoppsan svejsan :) 
Datum: Wed, 15 May 2002 18:00:58 +0200 
Från: <sven@hotmail.com>
Till: "Persson, Johan" 

0046736762015 

det stämmer inte.. 5 ska det inte vara, inte med min huvudräkning i alla fall.. :)

Kan ju dock vara som så att jag är trött.. men .. så trött?
"SENDER=TEST" måste ju vara mer än 5 bokstäver långt.. "tycka"

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

## #5 — SPiN, 2002-05-15T17:03Z

Du kollar ju mot själva arrayen, inte mot ett element. :)
Det stämmer, då arrayen har totalt 5 element. Lägg till \[ 0 \] efter så ska det funka som du vill. :)

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

## #6 — nkrantz, 2002-05-16T07:06Z

eller så börjar du bara loopen med 0 istället för 1... eller missade jag ngt?

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

## #7 — peronet, 2002-05-16T07:10Z

...$sender = explode(";", $amne\[$j\]); 
if ($sender) { 
$temp = strlen($sender); 
.....

Börja med 0 istället för 1 ??
Jag vill bara ha ut antal tecken i strängen $sender
och det är väl ingen array?

Vilka är de fem elementen om det nu skulle vara en array?

snälla hjälp mig, jag blir galen... :(

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

## #8 — Matte, 2002-05-16T07:38Z

$sender ÄR en array. Funktionen explode delar upp en sträng i en array. Array-elementen skiljs åt med ";". Exempel:

```
$strang = "A;B;C";

$enArray = explode(";", $strang);
// ger samma resultat som:
$enArray = array("A", "B", "C");
```

 
Ta en titt i manualen <http://www.php.net/manual/en/function.explode.php>

strlen($sender) returnerar i det här fallet antalet tecken i ordet "Array". Jämför med: echo $sender.

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

## #9 — SPiN, 2002-05-16T09:10Z

Vad är det du vill kontrollera? Ämnesraden?

```
$sender = explode(";", $amne[$j]);
if ($sender) {
$temp = strlen($sender[ 0 ]);
```

> strlen($sender) returnerar i det här fallet antalet tecken i ordet "Array". Jämför med: echo $sender.

Så är det ja, såklart. :)

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

## #10 — peronet, 2002-05-16T09:15Z

Det jag slutligen vill göra är att dela upp ämnes raden enligt:
Ämne: SENDER=TEST; MESSAGE=hejsan hoppsan svejsan  
så att det blir:
$sender = "TEST";
$message= "hejsan hoppsan svejsan";

hur görs detta smidigast?

Jag vill alltså inte ha det:
$sender = "SENDER="TEST"";
$message = "MESSAGE="hejsan hoppsan svejsan"";

om ni förstår

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

## #11 — SPiN, 2002-05-16T09:23Z

Du får du lägga till ett par rader:

```
$tmpArray = explode ( ";", $amne[ $j ] );
$sender = trim ( $tmpArray[ 0 ] );
$message = trim ( $tmpArray[ 1 ] );
$tempSender = strlen ( $sender );
$tempMessage = strlen ( $message );
```

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

## #12 — peronet, 2002-05-16T09:24Z

Testar detta.. 

:)

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

## #13 — peronet, 2002-05-16T09:30Z

$tmpArray = explode ( ";", $amne\[ $j \] );
$sender = trim ( $tmpArray\[ 0 \] );
$message = trim ( $tmpArray\[ 1 \] );
$tempSender = strlen ( $sender );
$tempMessage = strlen ( $message );

print "\<B\>TEMP1: \</B\> $tempSender \<BR\>";
print "\<B\>TEMP2: \</B\> $tempMessage \<BR\>";

print "\<B\>TEMP: \</B\> $temp \<BR\>";
print "\<B\>Sender: \</B\> $sender\[0\] \<BR\>";
print "\<B\>Ämne: \</B\> $amne\[$j\] \<BR\>";
print "\<B\>Datum:\</B\> $datum\[$j\] \<BR\>";
print "\<B\>Från: \</B\> $from\[$j\] \<BR\>";
print "\<B\>Till: \</B\> $till\[$j\] \<BR\>\<BR\>";
print "$mailet\[$j\]";
print "\<BR\>\<BR\>\<BR\>";

ger...

TEMP1: 13 
TEMP2: 30 
TEMP: 13 
Sender: S 
Ämne: SENDER=TESTAR; MESSAGE=hejsan hoppsan svejsan; 
Datum: Thu, 16 May 2002 11:25:17 +0200 
Från: <klas.knut@domain.se>
Till: "Persson, Johan" 

mail meddelandet

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

## #14 — Matte, 2002-05-16T11:18Z

Prova det här:

```
$tmpArray = explode ( ";", $amne[ $j ] ); 
for ($i=0; $i<2; $i++){ 
  $tmpArray[$i] = explode("=", $tmpArray[$i]);
  $tmpArray[$i][0] = ltrim($tmpArray[$i][0]);
  ${strtolower($tmpArray[$i][0])} = $tmpArray[$i][1];
}

//Bara för test:
echo "Sender: $sender <br>";
echo "Message: $message <br>";

$tempSender = strlen ( $sender ); 
$tempMessage = strlen ( $message );
```

 Observera: $sender är nu inte en array !!

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

## #15 — peronet, 2002-05-16T11:27Z

$sender = explode(";", $amne\[$j\]);
$temp = strlen($sender\[0\]);

$tmpArray = explode ( ";", $amne\[ $j \] ); 
for ($i=0; $i\<2; $i++){ 
  $tmpArray\[$i\] = explode("=", $tmpArray\[$i\]);
  $tmpArray\[$i\]\[0\] = ltrim($tmpArray\[$i\]\[0\]);
  ${strtolower($tmpArray\[$i\]\[0\])} = $tmpArray\[$i\]\[1\];
}

//Bara för test:
echo "Sender: $sender \<br\>";
echo "Message: $message \<br\>";

$tempSender = strlen ( $sender ); 
$tempMessage = strlen ( $message ); 

print "\<B\>TEMP1: \</B\> $tempSender \<BR\>";
print "\<B\>TEMP2: \</B\> $tempMessage \<BR\>";

print "\<B\>TEMP: \</B\> $temp \<BR\>";
print "\<B\>Sender: \</B\> $sender\[0\] \<BR\>";
print "\<B\>Ämne: \</B\> $amne\[$j\] \<BR\>";
print "\<B\>Datum:\</B\> $datum\[$j\] \<BR\>";

ger...

Sender: HEJ 
Message: hejsan svejsan massor 
TEMP1: 3 
TEMP2: 21 
TEMP: 10 
Sender: H 
Ämne: SENDER=HEJ; MESSAGE=hejsan svejsan massor 
Datum: Thu, 16 May 2002 13:24:30 +0200 

hummm blev rätt.. :)

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

## #16 — peronet, 2002-05-16T12:35Z

Kan någon förklara följande för mig?

Prova det här: 

kod:--------------------------------------------------------------------------------$tmpArray = explode ( ";", $amne\[ $j \] ); 
for ($i=0; $i\<2; $i++){ 
  $tmpArray\[$i\] = explode("=", $tmpArray\[$i\]);
  $tmpArray\[$i\]\[0\] = ltrim($tmpArray\[$i\]\[0\]);
  ${strtolower($tmpArray\[$i\]\[0\])} = $tmpArray\[$i\]\[1\];
}

//Bara för test:
echo "Sender: $sender \<br\>";
echo "Message: $message \<br\>";

$tempSender = strlen ( $sender ); 
$tempMessage = strlen ( $message );

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

## #17 — Matte, 2002-05-16T15:23Z

Det kanske man är skyldig att göra.

Vi tar det ett steg i taget både det du vet och eventuellt inte vet.

```
//Vi har ett array-element med följande sträng:
$amne[ $j ] = "SENDER=HEJ; MESSAGE=hejsan svejsan massor ";

$tmpArray = explode ( ";", $amne[ $j ] ); 
/* Lägger strängens innehåll i en array. Delar upp i array-element 
   efter semikolon(;). Arrayen ser efter explode ut så här:
   array ("SENDER=HEJ", " MESSAGE=hejsan svejsan massor ") */

for ($i=0; $i<2; $i++){ 
/* En räknare till våra två element. Tveksamt om det behövs, 
   men kan vara bra om man vill utöka till flera. */

$tmpArray[$i] = explode("=", $tmpArray[$i]);
/* Vi delar upp våra array-element i under-arrayer, delade med "=".
   Arrayen ser efter explode ut så här:
   array (array("SENDER", "HEJ"), array(" MESSAGE", "hejsan svejsan massor ") */

$tmpArray[$i][0] = ltrim($tmpArray[$i][0]);
/* Vi tar bort eventuella mellanslag i början på våra första-element
   i under arrayen. Arrayen ser efter ltrim ut så här:
   array (array("SENDER", "HEJ"), array("MESSAGE", "hejsan svejsan massor ") */

${strtolower($tmpArray[$i][0])} = $tmpArray[$i][1]; 
/* Här kommer det krångliga. Vi tittar på första elementet i $tmpArray.
   $tmpArray[$i][0] är första elementet i under-arrayen => "SENDER"
   strtolower($tmpArray[$i][0]) är samma sak som strtolower("SENDER"). Vi
   gör om det till små bokstäver. $tmpArray[$i][0] är nu "sender".
   ${strtolower($tmpArray[$i][0])} är samma sak som ${"sender"}. Detta är 
   något som kallas variabla variabler. Det kan man läsa mer om här:
   [url]http://www.php.net/manual/en/language.variables.variable.php[/url]
   Där står det att ${"sender"} är lika med $sender. Detta sätts 
   lika med under-arrayens andra element ("HEJ"). Med detta får vi variablerna
   $sender = "HEJ";
   $message = "hejsan svejsan massor ";  */
```

 
Nu är jag milt sagt en dålig pedagog, men om du läser igenom tillräckligt många gånger så hoppas jag du förstår vad jag försöker beskriva.

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

## #18 — peronet, 2002-05-16T15:30Z

Jag bockar och bugar!

Det var en mycket bra beskrivning, jag förstod precis.

Och det bästa av allt är att mitt program börjar lida mot sitt slut, vilket innebär att jag snart ska släppa denna biten och gå på nästa =)

Tack 100000 gånger.

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

## #19 — filipbh, 2003-08-06T11:04Z

Vet inte om detta har med denna disskussion att göra men jag skulle veta hur man ska göra för att korta ner en text.. Ska man använda "strlen" då också.. Alltså om jag vill få ut en text från databasen (mysql) men bara visa de 20 första tecknen och inte hela..

Hur ska jag skriva då?

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

## #20 — Matte, 2003-08-06T11:24Z

Enklast är väl att göra det direkt i SQL-frågan:

```
$sql = "SELECT LEFT(kolumnnamn, 20) AS kolumnnamn FROM tabell";
```

 

Annars om du vill göra det med PHP:

```
$short_string = substr($long_string, 0, 20);
```

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

---

Tråden på webben: https://www.webforum.nu/amne/php/43827-räkna-antal-tecken-i-en-sträng  
Nästa sida: https://www.webforum.nu/amne/php/43827-räkna-antal-tecken-i-en-sträng/page2.md
