Usuwanie 4 pierwszych znaków

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Patol89
Nowy
Nowy
Posty: 34
Rejestracja: śr paź 24, 2007 10:28 am
Kontakt:

Usuwanie 4 pierwszych znaków

Post 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 :)
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: Usuwanie 4 pierwszych znaków

Post 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]
Patol89
Nowy
Nowy
Posty: 34
Rejestracja: śr paź 24, 2007 10:28 am
Kontakt:

Re: Usuwanie 4 pierwszych znaków

Post autor: Patol89 »

Nie myli Cię pamięć to działa :)
Dzięki wielkie i pozdrawiam.
Gnusmas
Posty: 11
Rejestracja: śr lip 02, 2008 5:09 pm

Re: Usuwanie 4 pierwszych znaków

Post 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]
Patol89
Nowy
Nowy
Posty: 34
Rejestracja: śr paź 24, 2007 10:28 am
Kontakt:

Re: Usuwanie 4 pierwszych znaków

Post 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 :)
Gnusmas
Posty: 11
Rejestracja: śr lip 02, 2008 5:09 pm

Re: Usuwanie 4 pierwszych znaków

Post 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]
gorylek
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: śr gru 19, 2007 7:29 pm

Re: Usuwanie 4 pierwszych znaków

Post 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 :-)
Gnusmas
Posty: 11
Rejestracja: śr lip 02, 2008 5:09 pm

Re: Usuwanie 4 pierwszych znaków

Post 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]
Patol89
Nowy
Nowy
Posty: 34
Rejestracja: śr paź 24, 2007 10:28 am
Kontakt:

Re: Usuwanie 4 pierwszych znaków

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