---
title: "Ändra innehåll i en textfil"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/39471-ändra-innehåll-i-en-textfil"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Web-Tor"
published: "2002-03-12T08:45:19.000Z"
updated: "2002-03-12T13:29:19.000Z"
replies: 6
views: 299
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/39471-ändra-innehåll-i-en-textfil"
---

# Ändra innehåll i en textfil

## #1 — Web-Tor, 2002-03-12T08:45Z

Via ett formulär så vill jag ändra texten i en textfil. Problem är att den lägger till "skräp" i slutet av filen. Här är php-koden:

```php
<?php if ($cmdSubmit){ 

$fil = fopen ("right.svg", "r+");
$innehåll = fread ($fil, filesize("right.svg"));

$sök = '|<rad1>(.*?)</rad1>|';
$ersätt = "<rad1>$flt1</rad1>";
$innehåll = preg_replace ($sök, $ersätt, $innehåll);

$sök = '|<rad2>(.*?)</rad2>|';
$ersätt = "<rad2>$flt2</rad2>";
$innehåll = preg_replace ($sök, $ersätt, $innehåll);

rewind ($fil);
fwrite ($fil, $innehåll);
fclose ($fil);

}
?>
```

 

I textfilen (right.svg) har jag följande text:

```
<rad1>text</rad1>
<rad2>text</rad2>
```

Det som står mellan \<rad\>-taggarna ersätts utan problem men ibland så lägger den till typ: **2\>** eller **rad2\>** i slutat av filen.

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

## #2 — SPiN, 2002-03-12T09:42Z

Testa följande istället:

```php
<?php
if ($cmdSubmit) {
   $innehåll = implode ( "\n", file ( "right.svg" ) );
   $fil = fopen ("right.svg", "w");
   filesize("right.svg"));
   $sök = '|<rad1>(.*?)</rad1>|';
   $ersätt = "<rad1>$flt1</rad1>";
   $innehåll = preg_replace ($sök, $ersätt, $innehåll);
   $sök = '|<rad2>(.*?)</rad2>|';
   $ersätt = "<rad2>$flt2</rad2>";
   $innehåll = preg_replace ($sök, $ersätt, $innehåll);

   fwrite ($fil, $innehåll);
   fclose ($fil);
}
?>
```

Eller så kan du också testa det här:

```php
<?php
if ($cmdSubmit) { 
   $fil = fopen ("right.svg", "r+");
   $innehåll = fread ($fil, filesize("right.svg"));
   $sök = '|<rad1>(.*?)</rad1>|';
   $ersätt = "<rad1>$flt1</rad1>";
   $innehåll = preg_replace ($sök, $ersätt, $innehåll);
   $sök = '|<rad2>(.*?)</rad2>|';
   $ersätt = "<rad2>$flt2</rad2>";
   $innehåll = preg_replace ($sök, $ersätt, $innehåll);
   ftruncate ($fil);
   fwrite ($fil, $innehåll);
   fclose ($fil);
}
?>
```

I exempel två använder jag ftruncate () istället för rewind (), för att ställa pilpekaren till postition 0 och ta bort allt i filen. Där tror jag att du hade ditt problem, då mode r+ som du öppnade filen med, inte trunkerar filen och lämnar kvar allt i den. När du sedan skrev till filen, och skrev färre tecken än vad den hade från början, så blev dessa kvar. I exempel ett läser jag filen separat med file (), och skriver till den separat - och trunkerar filen vid öppnandet av den.

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

## #3 — Web-Tor, 2002-03-12T09:51Z

> När du sedan skrev till filen, och skrev färre tecken än vad den hade från början, så blev dessa kvar.

Där tror jag att du har rätt men dina exempel funkade inte riktigt.

1\. Den la till en extra radmatning på varje rad.

2\. **Warning:** Wrong parameter count for ftruncate()

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

## #4 — SPiN, 2002-03-12T11:24Z

:r

1\.
implode ()n ska se ut så här:

```
implode ( "", file ( "filen.txt" ) );
```

2\.
ftruncate () tar filpekaren som parameter.

```
ftruncate ( $fil );
```

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

## #5 — Web-Tor, 2002-03-12T11:51Z

Tack Spin, 1:an funkar perfekt men jag fattar forfarande inte varför det blir fel på ftruncate ($fil); men skit samma.

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

## #6 — SPiN, 2002-03-12T13:05Z

Hm, kollade manualen nu... Då stod det att storleken skulle med också, som parameter.

Det borde alltså vara:

```
ftruncate ( $fil, 0 );
```

Vassego! :)

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

## #7 — Web-Tor, 2002-03-12T13:29Z

Jag tänkte väl att det var nåt som saknades. Tack!

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

---

Tråden på webben: https://www.webforum.nu/amne/php/39471-ändra-innehåll-i-en-textfil
