Strona 1 z 1
Usuwanie 4 pierwszych znaków
: czw sie 14, 2008 11:14 pm
autor: Patol89
Witam.
Chciał bym by skrypt przed zapisem do pliku usunął pierwsze 4 znaki czyli:
[php]
<?
msg = "add blablabla";
$plik=fopen("plik.txt","w");
fwrite($plik,$msg);
flock($plik,2);
?>
[/php]
by po zapisie zawartość pliku wyglądała tak:
blablabla a nie:
add blablabla
Jak przerobić skrypt by obcinał pierwsze 4 znaki?
Z góry dziękuję za pomoc

Re: Usuwanie 4 pierwszych znaków
: pt sie 15, 2008 8:57 am
autor: gorylek
[php]
<?php
$msg = "add blablabla";
$msg = substr($msg, 4); //Jeżeli mnie pamięć nie myli
$plik=fopen("plik.txt","w");
fwrite($plik,$msg);
flock($plik,2);
?>
[/php]
Re: Usuwanie 4 pierwszych znaków
: sob sie 16, 2008 9:49 pm
autor: Patol89
Nie myli Cię pamięć to działa

Dzięki wielkie i pozdrawiam.
Re: Usuwanie 4 pierwszych znaków
: pn sie 18, 2008 10:36 am
autor: Gnusmas
Wydaje mi się, że blokady powinny być tak założone.
[php]
<?php
$msg = "add blablabla";
$msg = substr($msg, 4); //Jeżeli mnie pamięć nie myli
$plik=fopen("plik.txt","w");
flock($plik, LOCK_EX);
fwrite($plik,$msg);
flock($plik,LOCK_UN);
?>
[/php]
Re: Usuwanie 4 pierwszych znaków
: wt sie 19, 2008 11:04 am
autor: Patol89
Rozwiazanie ktore podal
gorylek dziala prawidlowo, mogl bys wyjasnic dla czego powinienem urzyc :
[php]<?php
$msg = "add blablabla";
$msg = substr($msg, 4); //Jeżeli mnie pamięć nie myli
$plik=fopen("plik.txt","w");
flock($plik, LOCK_EX);
fwrite($plik,$msg);
flock($plik,LOCK_UN);
?>[/php]
zamiast :
[php]<?php
$msg = "add blablabla";
$msg = substr($msg, 4); //Jeżeli mnie pamięć nie myli
$plik=fopen("plik.txt","w");
fwrite($plik,$msg);
flock($plik,2);
?>[/php]
aktualny kod jest krotszy wiec po co ta zmiana?
Licze na wyjasnienie bo dopiero ucze sie PHP
Pozdrawiam

Re: Usuwanie 4 pierwszych znaków
: wt sie 19, 2008 8:17 pm
autor: Gnusmas
Po pierwsze:
Blokujemy plik do zapisu, przed zapisaniem w nim danych, a więc:
[php]<?php
flock($plik, LOCK_EX);
fwrite($plik,$msg);
?>[/php]
a nie:
[php]<?php
fwrite($plik,$msg);
flock($plik,2);
?>[/php]
Po drugie:
Jeśli już zablokowaliśmy plik, to warto byłoby go kiedyś odblokować, stąd też wzieło się:
[php]<?php
flock($plik,LOCK_UN);
?>[/php]
Oczywiście zamiast LOCK... możesz używać cyferek 1, 2, 3, 4.
Wypadałoby też dodać linijkę kodu która gdy kończymy pracę z plikiem zamyka go, a więc:
[php]<?php
$msg = "add blablabla";
$msg = substr($msg, 4); //Jeżeli mnie pamięć nie myli
$plik=fopen("plik.txt","w");
flock($plik, LOCK_EX);
fwrite($plik,$msg);
flock($plik,LOCK_UN);
fclose($plik);
?>[/php]
Re: Usuwanie 4 pierwszych znaków
: czw sie 21, 2008 4:30 pm
autor: gorylek
Nom, Gnusmas ma racje, sam tylko pokazałem Ci funkcje która uwali te 4 znaki. Nie przypatrywałem się reszcie kodu a że wieki temu robiłem cokolwiek przy obsłudze plików więc wiesz

Re: Usuwanie 4 pierwszych znaków
: pt sie 22, 2008 9:13 am
autor: Gnusmas
Jeżeli zależy Ci na krótkim kodzie to można zrobić to tak:
[php]<?php
$msg = "add blablabla";
$msg = substr($msg, 4);
file_put_contents("plik.txt", $msg, FILE_APPEND | LOCK_EX);
?>[/php]
Re: Usuwanie 4 pierwszych znaków
: pt sie 29, 2008 10:48 pm
autor: Patol89
Okej dzięki nie zależało mi na krótkim kodzie, tylko chciałem wiedzieć dla czego tak a nie inaczej, gdyż uczę się dopiero PHP
Dziękuję za wyjaśnienia i pozdrawiam!!!