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!!!