Avatar billede gulvlugt Nybegynder
30. marts 2008 - 16:00 Der er 9 kommentarer og
1 løsning

Skriv og slet fra en fil.

Hej.

Jeg vil gerne høre om det er muligt at skrive til en fil, men også slette noget fra den? Eller det er det jo. Min fil ser således ud:

"/etc/init.d/startupserver start -port 27015"
"/etc/init.d/startupserver start -port 27016"
"/etc/init.d/startupserver start -port 27017"
"/etc/init.d/startupserver start -port 27018"

Hvordan kan jeg så f.eks. slette den linje med porten "27016"?
Avatar billede olebole Juniormester
30. marts 2008 - 18:09 #1
<ole>

Prøv:

$aFile = file("sti/til/fil.txt");
$a = array();
for ($i=0,$j=count($aFile); i<j; i++) {
    if (strpos(aFile[i], "27016")===false) a[] = aFile[i];
}
str_put_contents("sti/til/fil.txt", implode("\r\n", $a));

/mvh
</bole>
Avatar billede gulvlugt Nybegynder
30. marts 2008 - 18:25 #2
Får flg. fejlmeddelse:
Parse error: syntax error, unexpected T_INC, expecting ')' in test.php on line 4
Avatar billede olebole Juniormester
30. marts 2008 - 18:27 #3
- så har du lavet en fejl  :)
Avatar billede olebole Juniormester
30. marts 2008 - 18:28 #4
Den kode, jeg har skrevet, kan vist ikke udløse den fejl  :)
Avatar billede gulvlugt Nybegynder
30. marts 2008 - 18:36 #5
Min fil: test.php ser således ud:
<?php
$aFile = file("test.txt");
$a = array();
for ($i=0,$j=count($aFile); i<j; i++) {
    if (strpos(aFile[i], "27016")===false) a[] = aFile[i];
}
str_put_contents("test.txt", implode("\r\n", $a));
?>

Filen: test.txt ser således ud:
"/etc/init.d/startupserver start -port 27015"
"/etc/init.d/startupserver start -port 27016"
"/etc/init.d/startupserver start -port 27017"
"/etc/init.d/startupserver start -port 27018"
Avatar billede olebole Juniormester
30. marts 2008 - 18:43 #6
*LoL* ... sorry, jeg sidder og skriver JavaScript, mens jeg svarer her - og det gik der vist ged i  ;D

$aFile = file("test.txt");
$a = array();
for ($i=0,$j=count($aFile); $i<$j; $i++) {
    if (strpos($aFile[$i], "27016")===false) $a[] = $aFile[$i];
}
file_put_contents("test.txt", implode("\r\n", $a));
Avatar billede gulvlugt Nybegynder
30. marts 2008 - 18:50 #7
Koden sletter fint. Dejligt.

Men efter første besøg på test.php så ser test.txt sådan her ud:
"/etc/init.d/startupserver start -port 27015"

"/etc/init.d/startupserver start -port 27017"

"/etc/init.d/startupserver start -port 27018"

Hvis jeg så køre test.php igen, så ser test.txt sådan her ud:
"/etc/init.d/startupserver start -port 27015"



"/etc/init.d/startupserver start -port 27017"



"/etc/init.d/startupserver start -port 27018"

Er det muligt at få den til at tjekke om linjen med porten 27016 er der? Og hvis den er så sletter den linjen - uden at lave de der mellemrum. Hvis linjen IKKE er der så køre den ikke scriptet, men udskriver blot: "FEJL!".
Avatar billede gulvlugt Nybegynder
30. marts 2008 - 18:53 #8
--- EDIT ---
Har rettet det med de der mellemrum. Men stadig det med at tjekke om linjen er der? Er det muligt?
--- EDIT ---

Kan du så hjælpe med en kode der gør det muligt at indsætte linjen: "/etc/init.d/startupserver start -port 27018"
Den må gerne indsættes i bunden, eller i toppen af filen, det er sådan set underordnet.
Avatar billede gulvlugt Nybegynder
01. april 2008 - 22:22 #9
^^ Har lavet resten selv. Svar, så du kan få dine point.
Avatar billede gulvlugt Nybegynder
03. maj 2008 - 17:07 #10
...
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

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