Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • vijesti
  • php učitavanje datoteke u varijablu. Datotečna skripta - Kako učitati PHP datoteku u varijablu? Tvoj izbor

php učitavanje datoteke u varijablu. Datotečna skripta - Kako učitati PHP datoteku u varijablu? Tvoj izbor

$Vdata = file_get_contents("textfile.txt");

Ali sada moram učitati PHP datoteku.

Pretpostavljam što želiš dobiti PHP generiran sadržaj, ako je tako:

$Vdata = file_get_contents("http://VAŠ_HOST/VAŠ/DATOTEKA.php");

Inače, ako želiš Izvorni kod PHP datoteke, ovo je isto kao i .txt datoteka:

$Vdata = file_get_contents("put/do/VAŠA/DATOTEKA.php");

ob_start(); uključiti "vašu datoteku.php"; $myvar = ob_get_clean();

Ako koristite http://, kao što je sugerirao eyel, moći ćete čitati samo izlaz PHP skripte. PHP skriptu možete čitati samo ako je na istom poslužitelju kao i vaša skripta. Tada možete koristiti nešto poput

$Vdata = file_get_contents("/path/to/your/file.php");

Ako želite preuzeti datoteku bez pokretanja putem web poslužitelja, sljedeće bi trebalo raditi.

$string = eval(file_get_contents("file.php"));

Zatim će se učitati sadržaj datoteke. PHP datoteka mora biti u potpunosti oblikovana s oznakamaDa bi eval to procijenio.

U teoriji možete jednostavno koristiti fopen, a zatim koristiti stream_get_contents.

$stream = fopen("file.php","r"); $string = stream_get_contents($stream); fclose($stream);

Alternativno, možete pokrenuti međuspremnik izlaza, napraviti uključiti / zahtijevati i zatim zaustaviti međuspremnik. S ob_get_contents() možete jednostavno dobiti stvari koje je emitirala druga PHP datoteka u varijablu.

file_get_contents() neće raditi ako je vaš poslužitelj onemogućeno allow_url_fopen. Većina dijeljenih web hostova onemogućena je prema zadanim postavkama zbog sigurnosnih rizika. Osim toga, u PHP6 opcija dopusti_url_fopen više neće postojati i sve će se značajke ponašati kao da su trajno onemogućene. Dakle, ovo je vrlo loša metoda za korištenje.

Vaš najbolji slučaj upotrebe ako datoteci pristupate putem http je cURL

Prije nego što pokušate raditi s datotekom, dobro je provjeriti postoji li. Za rješavanje ovog problema obično se koriste dvije funkcije:

file_exists() i is_file().

Funkcija file_exists() provjerava postoji li data datoteka. Ako datoteka postoji, funkcija vraća TRUE, inače vraća FALSE. Sintaksa za funkciju file_exists() je:

bool file_exists (datoteka niza)

Primjer provjere postojanja datoteke:

if (!file_exists($filename)) :

print "Datoteka $filename ne postoji!";

je_datoteka()

Funkcija is_file() provjerava postojanje date datoteke i mogućnost izvođenja operacija čitanja/pisanja na njoj. U osnovi, is_file() je robusnija verzija file_exists() koja provjerava ne samo postoji li datoteka, već i može li čitati i pisati podatke:

bool is_file (datoteka niza)

Sljedeći primjer pokazuje kako provjeriti da datoteka postoji i da se na njoj mogu izvesti operacije:

$file = "nekadatoteka.txt";

if (is_file($file)) :

print "Datoteka $file je važeća i postoji!";

print "Datoteka $file ne postoji ili nije valjana datoteka!";

Nakon što se uvjerite da željena datoteka postoji i da s njom možete izvoditi razne operacije čitanja/pisanja, možete nastaviti na sljedeći korak - otvaranje datoteke.

Funkcija filesize() vraća veličinu (u bajtovima) datoteke s navedenim imenom ili FALSE u slučaju pogreške. Sintaksa funkcije filesize() je:

int veličina datoteke (niz naziv datoteke)

Recimo da želite odrediti veličinu datoteke pastry.txt. Možete koristiti funkciju filesize() da biste dobili informacije koje su vam potrebne:

$fs = veličina datoteke("pastry.txt"); print "Pastry.txt je $fs bajtova.";

Prikazuje se sljedeći rezultat:

Pastry.txt ima 179 bajtova.

Prije izvođenja operacija nad datotekom, morate je otvoriti i povezati s rukohvatom datoteke, a kada završite s radom s datotekom, morate je zatvoriti. Te su teme obrađene u sljedećem odjeljku.

Otvaranje i zatvaranje datoteka

Prije izvođenja I/O operacija na datoteci, ona se mora otvoriti s funkcijom fopen().

Funkcija fopen() otvara datoteku (ako postoji) i vraća cijeli broj -- tzv. ručka datoteke(datoteka). Sintaksa funkcije fopen() je:

int fopen(datoteka niza, način niza[, int uključuje_path])

Datoteka koja se otvara može se nalaziti u lokalnom datotečnom sustavu, postojati kao standardni ulaz/izlaz ili predstavljati datoteku na udaljenom sustavu koju prihvaća HTTP ili FTP.

Parametar datoteke može imati nekoliko oblika, kao što je navedeno u nastavku:

Ako parametar sadrži naziv lokalne datoteke, funkcija fopen() otvara tu datoteku i vraća ručku.

Ako je parametar postavljen na php://stdin, php://stdout ili php://stderr, otvara se odgovarajući standardni ulazno/izlazni tok.

Ako parametar počinje s prefiksom http://, funkcija otvara HTTP vezu s poslužiteljem i vraća ručku za navedenu datoteku.

Ako parametar počinje s ftp:// prefiksom, funkcija otvara FTP vezu s poslužiteljem i vraća ručku za navedenu datoteku. U ovom slučaju trebate obratiti posebnu pozornost na dvije stvari: ako poslužitelj ne podržava pasivni FTP način, poziv fopen() neće uspjeti. Štoviše, FTP datoteke se otvaraju ili za čitanje ili za pisanje.

Kada radi u pasivnom načinu rada, LR poslužitelj čeka konekcije od klijenata. Kada radi u aktivnom načinu rada, poslužitelj sam uspostavlja vezu s klijentom. Zadani je obično aktivan način rada.

Parametar načina određuje može li se datoteka čitati ili u nju pisati. U tablici. 7.1 navodi neke vrijednosti koje određuju način otvaranja datoteke.

Tablica 7.1. Načini otvaranja datoteka

Način rada Opis
Samo čitanje. Trenutni pokazivač položaja postavljen je na početak datoteke
r+ Čitanje i pisanje. Trenutni pokazivač položaja postavljen je na početak datoteke
w Samo snimanje. Pokazivač trenutne pozicije postavlja se na početak datoteke, a cijeli sadržaj datoteke se uništava. Ako datoteka ne postoji, funkcija je pokušava stvoriti.
w+ Čitanje i pisanje. Pokazivač trenutne pozicije postavlja se na početak datoteke, a cijeli sadržaj datoteke se uništava. Ako datoteka ne postoji, funkcija je pokušava stvoriti.
a Samo snimanje. Trenutni pokazivač položaja postavljen je na kraj datoteke. Ako datoteka ne postoji, funkcija je pokušava stvoriti.
a+ Čitanje i pisanje. Trenutni pokazivač položaja postavljen je na kraj datoteke. Ako datoteka ne postoji, funkcija je pokušava stvoriti.

Ako je neobavezni treći parametar include_path 1, tada je put datoteke relativan na uključeni direktorij naveden u datoteci php.ini (pogledajte Poglavlje 1).

Slijedi primjer otvaranja datoteke s funkcijom fopen(). Poziv die(), koji se koristi zajedno s fopen(), ispisuje poruku o pogrešci ako se datoteka ne otvori:

$file = "userdata.txt"; // Neka datoteka

$fh = fopen($file, "a+") ili die("Datoteka ($file) ne postoji!");

Sljedeći isječak otvara vezu s PHP web-mjestom (http://www.php.net):

$site = "http://www.php.net": // Poslužitelj dostupan putem HTTP-a

$sh = fopen($site., "r"); //Povežite manipulator s indeksnom stranicom Php.net

Datoteku treba uvijek zatvoriti funkcijom fclose() nakon završetka.

Funkcija fclose() zatvara datoteku s danom ručkom. Vraća TRUE u slučaju uspjeha, FALSE u slučaju neuspjeha. Sintaksa funkcije fclose() je:

int fclose (int manipulator)

Funkcija fclose() uspješno zatvara samo one datoteke koje su prethodno bile otvorene funkcijama fopen() ili fsockopen(). Primjer zatvaranja datoteke:

$file = "userdata.txt";

ako (file_exists($file)) :

$fh = fopen($datoteka, "r");

// Izvođenje operacija s datotekama

print "Datoteka Sfile ne postoji!";

Napiši u datoteku

Na otvorenim datotekama izvode se dvije osnovne operacije - čitanje i pisanje.

Funkcija is_writeable() provjerava da datoteka postoji i da se može pisati. Provjerava se mogućnost pisanja i za datoteku i za direktorij. Sintaksa funkcije is_writeable() je:

bool is_writeable (datoteka niza)

Jedna važna stvar: PHP će se najvjerojatnije izvoditi pod korisničkim ID-om koji koristi web poslužitelj (obično "nitko"). Primjer korištenja is_writeable() dat je u opisu funkcije fwrite().

Funkcija fwrite() zapisuje sadržaj varijable niza u datoteku specificiranu u rukohvatu datoteke. Sintaksa funkcije fwrite() je:

int fwrite(int manipulator, varijabla niza [, int duljina])

Ako se prilikom pozivanja funkcije prosljeđuje neobavezni parametar duljine, snimanje se zaustavlja ili nakon što se upiše navedeni broj znakova ili kada se dosegne kraj niza. Provjera sposobnosti pisanja u datoteku prikazana je u sljedećem primjeru:

// Informacije o prometu na korisničkoj stranici

$data = "08:13:00|12:37:12|208.247.106.187|Win98";

$filename = "somefile.txt";

// Ako datoteka postoji i u nju se može pisati

if (is_writeable($filename)) :

$fh = fopen($ime datoteke, "a+");

// Zapišite sadržaj $data u datoteku

$uspjeh - fwrite($fh, $podaci);

// zatvori datoteku

fclose($fh); drugo:

print "Nije moguće otvoriti Sfilename za pisanje";

Funkcija fputs() je pseudonim za fwrite() i može se koristiti bilo gdje gdje se koristi fwrite().

Funkcija fputs() je alias za fwrite() i ima potpuno istu sintaksu. Sintaksa funkcije fputs() je:

int fputs(int manipulator, varijabla niza [, int dužina])

Osobno više volim koristiti fputs(). Imajte na umu da je ovo samo pitanje stila i da nema nikakve veze s razlikama između te dvije funkcije.

Čitanje iz datoteke

Bez sumnje, čitanje je najvažnija operacija koja se izvodi na datotekama. Neke od značajki koje poboljšavaju učinkovitost čitanja iz datoteke opisane su u nastavku. Sintaksa ovih funkcija gotovo točno kopira sintaksu sličnih funkcija snimanja.

Funkcija i s_readable() omogućuje vam da provjerite postoji li datoteka i da je za nju dopuštena operacija čitanja. Čitljivost se provjerava i za datoteku i za direktorij. Sintaksa funkcije is_readable() je:

boo! is_readable (datoteka niza)

Najvjerojatnije će PHP raditi pod korisničkim ID-om koji koristi web poslužitelj (obično "nitko"), pa da bi funkcija is_readable() vratila TRUE, svima mora biti dopušteno čitanje iz datoteke. Sljedeći primjer pokazuje kako provjeriti da datoteka postoji i da je čitljiva:

if (is_readable($filename)) :

// Otvorite datoteku i postavite pokazivač trenutne pozicije na kraj datoteke

$fh = fopen($ime datoteke, "r");

print "$filename nije čitljivo!";

Funkcija fread() čita određeni broj bajtova iz datoteke koju je specificirao rukohvat datoteke. Sintaksa funkcije fwrite() je:

int fread (int manipulator, int dužina)

Manipulator se mora odnositi na otvorenu čitljivu datoteku (pogledajte opis funkcije is_readable()). Čitanje se zaustavlja nakon čitanja navedenog broja bajtova ili kada se dostigne kraj datoteke. Razmotrite tekstualnu datoteku pastry.txt prikazanu u Listingu 7.1. Čitanje i izlaz ove datoteke u pregledniku vrši se sljedećim fragmentom:

$fh = fopen("pastry.txt", "r") ili die("Ne mogu otvoriti datoteku!");

$datoteka = fread($fh, veličina datoteke($fh));

Korištenjem funkcije fllesize() za određivanje veličine pastry.txt u bajtovima osiguravate da funkcija fread() čita cijeli sadržaj datoteke.

Listing 7.1. Tekstualna datoteka pastry.txt

Recept: Tijesto za pecivo

1 1/4 šalice višenamjenskog brašna

3/4 štapića (6 žlica) neslanog maslaca, nasjeckanog

2 žlice povrća skraćivanje 1/4 žličice soli

3 žlice vode

Funkcija fgetc() vraća niz koji sadrži jedan znak iz datoteke na trenutnoj poziciji pokazivača, ili FALSE ako se dostigne kraj datoteke. Sintaksa funkcije fgetc() je:

string fgetc (int manipulator)

Manipulator se mora pozivati ​​na otvorenu čitljivu datoteku (pogledajte opis funkcije is_readable() ranije u ovom poglavlju). Sljedeći primjer prikazuje čitanje i izlaz datoteke znak po znak pomoću funkcije fgetc():

$fh = fopen("pastry.txt", "r"); dok (!feof($fh)) :

$char = fgetc($fh):

ispis $char; endwhile;

Funkcija fgets() vraća niz pročitan s trenutnog položaja pokazivača u datoteci koju je specificirao filehandle. Pokazivač datoteke mora pokazivati ​​na otvorenu čitljivu datoteku (pogledajte opis funkcije is_readable() ranije u ovom poglavlju). Sintaksa funkcije fgets():

string fgets (int manipulator, int dužina)

Čitanje se zaustavlja kada je ispunjen jedan od sljedećih uvjeta:

  • čitanje iz duljine datoteke -- 1 bajt;
  • znak novog reda je pročitan iz datoteke (uključen u vraćeni niz);
  • kraj datoteke (EOF) je pročitan iz datoteke.

Ako želite čitati datoteku red po redak, unesite u drugi parametar vrijednost koja je očito veća od broja bajtova u retku. Primjer čitanja i izlaza datoteke red po red:

$fh = fopen("pastry.txt", "r");

dok (!feof($fh));

$line = fgets($fh, 4096);

ispis $line. "
";

Funkcija fgetss() potpuno je ista kao i fgets() s jednom iznimkom - pokušava ukloniti sve HTML i PHP oznake iz pročitanog teksta:

string fgetss(Int manipulator, int dužina [, string dopuštene_oznake])

Prije nego što prijeđete na primjere, pogledajte listing 7.2 - ova datoteka se koristi u popisima 7.3 i 7.4.

Listing 7.2. science.html datoteku

Najnovije vijesti - znanost

Otkriven vanzemaljski oblik života


20. kolovoza 2000. godine

Rano jutros u ormaru starog hladnjaka u stanu W. J. Gilmorea pronađen je čudan novi oblik gljivice. Nije poznato je li snažno zračenje koje je izbijalo iz monitora računala stanara pomoglo u ovoj evoluciji.

Listing 7.3. Uklanjanje oznaka iz HTML datoteke prije prikazivanja u pregledniku

$fh = fopen("science.html", "r");

dok (!feof($fh)) :

ispis fgetss($fh, 2048);

Rezultat je prikazan u nastavku. Kao što možete vidjeti, sve HTML oznake su uklonjene iz datoteke science.html, što je rezultiralo gubitkom oblikovanja:

U nekim se situacijama sve oznake uklanjaju iz datoteke, osim nekih - na primjer, oznake prijeloma reda
. Listing 7.4 pokazuje kako se to radi.

Listing 7.4. Selektivno uklanjanje oznaka iz HTML datoteke

$fh = fopenC"science.html", "r");

$allowable="
";

dok (!feof($fh)) :

ispis fgetss($fh. 2048, $dopušteno);

Proizlaziti:

Najnovije vijesti - Znanstveni oblik života izvanzemaljaca otkriven 20. kolovoza 2000. Rano jutros u ormaru starog hladnjaka u stanu WJ Gilmorea pronađen je čudan novi oblik gljivice. Nije poznato je li u tome pomoglo snažno zračenje koje dolazi iz monitora računala stanara. evolucija.

Kao što možete vidjeti, funkcija fgetss() olakšava pretvaranje datoteka, pogotovo ako imate puno HTML datoteka sličnog formata.

Čitanje datoteke u niz

Funkcija file() učitava cijeli sadržaj datoteke u indeksirani niz. Svaki element niza odgovara jednom retku datoteke. Sintaksa za funkciju file() je:

datoteka niza (datoteka niza [, int include_path])

Ako je neobavezni treći parametar include_path 1, tada je put datoteke relativan na uključeni direktorij naveden u datoteci php.ini (pogledajte Poglavlje 1). Popis 7-5 koristi funkciju file() za učitavanje datoteke pastry.txt (vidi Listing 7-1).

$file_array = datoteka("pastry.txt");

dok (list($line_num. $line) = everyt($file_array)):

ispis" Red $line_num:", htmlspecialchars($line), "
\n"

Svaki red niza izlazi zajedno s brojem:

Redak 0: Recept: Tijesto za pecivo

Red 1: 1 1/4 šalice višenamjenskog brašna

2. red: 3/4 štapića (6 žlica) neslanog maslaca, nasjeckanog

3. red: 2 žlice povrća skraćivanja

4. red: 1/4 žličice soli

Red 5: 3 žlice vode

Preusmjeravanje datoteke na standardni izlaz

Funkcija readfile() čita sadržaj datoteke i zapisuje ga u standardni izlaz (u većini slučajeva u preglednik). Sintaksa funkcije readfile() je:

int readfile(datoteka niza[, int uključuje_path])

Funkcija vraća broj pročitanih bajtova. Datoteka se može nalaziti u lokalnom datotečnom sustavu, postojati kao standardni ulaz/izlaz ili predstavljati datoteku na udaljenom sustavu koju prihvaća HTTP ili FTP. Parametar datoteke postavlja se prema istim pravilima kao u funkciji fopen().

Recimo da imate datoteku latorre.txt koju želite prikazati u pregledniku:

Restoran "La Torre". smješten u Nettunu, Italija, nudi eklektičan spoj stila. povijest i fina morska kuhinja. Unutar zidina srednjovjekovnog borga koji okružuje grad, može se objedovati dok gledate kako prolaznici kupuju u seoskim buticima. Udobnost u kombinaciji sa samo najsvježijim morskim plodovima čine La Torre jednim od najboljih talijanskih restorana.

Kada se izvrši sljedeći isječak, cijeli sadržaj latorre.txt šalje se u standardni izlazni tok:

$restaurant_file = "latorre.txt";

// Pošalji cijelu datoteku na standardni izlaz

readfile($restaurant_file);

Otvaranje filehandle procesa

Uz obične datoteke, možete otvoriti filehandlere za interakciju s procesima na poslužitelju. Problem je riješen funkcijom popen() koja ima sljedeću sintaksu:

int popen (naredba niza, način niza)

Parametar naredbe specificira naredbu sustava koju treba izvršiti, a parametar načina opisuje način pristupa:

// Otvorite datoteku "spices.txt" za pisanje

$fh = fopen("spices.txt","w");

// Dodaj više redaka teksta

fputs($fh, "Peršin, kadulja, ružmarin\n");

fputs($fh, "Paprika, sol, papar\n");

fputs($fh, "Bosiljak, kadulja, đumbir\n");

// Zatvori manipulator

// Otvorite UNIX grep proces za traženje riječi bosiljak u spices.txt

$fh - popen("grep Basil< spices.txt", "r");

// Ispis izlaza grep

Rezultat izgleda ovako:

Bosiljak, kadulja, đumbir

Funkcija fpassthru() analogna je funkciji passthru() o kojoj se govori u odjeljku "Pokretanje vanjskih programa" ovog poglavlja.

Nakon dovršetka svih operacija, datoteka ili proces se moraju zatvoriti. Funkcija pclose() zatvara vezu s procesom specificiranim ručkom, slično kao što funkcija fclose() zatvara datoteku otvorenu funkcijom fopen(). sintaksa funkcije pclose():

int pclose (int manipulator)

U parametru manipulator manipulator dobiven ranije iz uspješnog poziva popen() je proslijeđen.

Otvaranje utičnice

PHP nije ograničen na interakciju s datotekama i procesima - također možete uspostaviti socket veze. utičnica(socket) je softverska apstrakcija koja vam omogućuje komunikaciju s raznim uslugama na drugom računalu.

Funkcija fsockopen() uspostavlja vezu utičnice s poslužiteljem na Internetu

putem TCP ili UDP protokola. Sintaksa funkcije fsockopen() je:

int fsockopen (string čvor, int port [, int error_code [, string error_text [, int timeout]]])

Neobavezni parametri error_code i error_text sadrže informacije koje će se prikazati ako veza s poslužiteljem ne uspije. Oba parametra moraju biti proslijeđena referencom. Treći neobavezni parametar, timeout, određuje koliko dugo treba čekati odgovor od poslužitelja (u sekundama). Popis 7-6 pokazuje kako koristiti funkciju fsockopen() za dobivanje informacija o poslužitelju. Prije nego pogledamo Listing 7.6, međutim, postoji još jedna funkcija koju treba uvesti, socket_set_blocking().

UDP (User Datagram Protocol) je komunikacijski protokol koji nije orijentiran na vezu.

socket_set_blocking()

Funkcija socket_set_b1ocki ng() omogućuje vam postavljanje kontrola vremenskog ograničenja za operacije poslužitelja:

socket_set_blocking(int manipulator, boolean način rada)

Parametar manipulatora specificira prethodno otvorenu utičnicu, a parametar načina odabira način na koji se utičnica prebacuje (TRUE za način blokiranja, FALSE za neblokirajući način). Primjer korištenja funkcija fsockopen() i socket_set_blocking() prikazan je u Listingu 7.6.

Listing 7.6. Korištenje funkcije fsockopen() za dobivanje informacija o poslužitelju

funkcija getthehost($host.$path) (

// Otvaranje veze s čvorom

$fp - fsockopen($host, 80, &$errno, &$errstr, 30);

// Prijelaz na način blokiranja

socket_set_blocking($fp, 1),

// Pošaljite zaglavlja

fputs($fp,"GET $path HTTP/1.1\r\n");

fputs($fp, "Host: $host\r\n\r\n"); $x = 1;

// Dobiti zaglavlja

dok ($x< 10) :

$headers = fgets($fp, 4096);

// Zatvori manipulator

getthehost("www.apress.com", "/");

Popis 7.6 daje sljedeći rezultat:

HTTP/1.1 200 OK Poslužitelj: Microsoft-IIS/4.0 Lokacija sadržaja:

2000. 20:25:06 GMT ETag: "f0a61666dbff1bf1:34a5" Dužina sadržaja: 1311

Funkcija pfsockopen() je trajna verzija fsockopen(). To znači da se veza neće automatski prekinuti kada završi skripta u kojoj je funkcija pozvana. Sintaksa funkcije pfsockopen():

int pfsockopen (string host, int port [, int error_code [, string error_text [, int timeout]]])

Ovisno o specifičnim ciljevima vaše aplikacije, možda će biti prikladnije koristiti pfsockopen() umjesto fsockopen().

Pokretanje vanjskih programa

PHP skripte također mogu izvršavati programe koji se nalaze na poslužitelju. Ova se značajka posebno često koristi kod administriranja sustava putem web preglednika, kao i za praktičnije dobivanje sažetih informacija o sustavu.

Funkcija exec() pokreće dati program i vraća zadnji redak njegovog izlaza. Sintaksa funkcije exec() je:

string exec (naredba stringa [, niz nizova [, int return]])

Imajte na umu da funkcija exec() samo izvršava naredbu, a ne daje rezultate svog rada. Sav izlaz naredbe može se pohraniti u opcijski parametar niza. Također, ako je povratna varijabla također navedena kada je naveden parametar niza, potonjem se dodjeljuje povratni kod izvršene naredbe.

Listing 7.7 pokazuje kako koristiti funkciju exec() za izvršavanje funkcije ping sustava UNIX.

Listing 7.7. Provjera veze s poslužiteljem pomoću funkcije exec().

exec("ping -c 5 www.php.net", $ping);

// U sustavu Windows, exec("ping -n 5 www.php.net. $ping);

za ($i=0; $i< count($ping);$i++) :

ispis"
$ping[$i]";

Proizlaziti:

PING www.php.net (208.247.106.187): 56 bajtova podataka

64 bajta od 208.247.106.187: icmp_seq=0 ttl=243 vrijeme=66.602 ms

64 bajta od 208.247.106.187: icmp_seq=1 ttl=243 vrijeme=55,723 ms

64 bajta od 208.247.106.187: icmp_seq=2 ttl=243 vrijeme=70,779 ms

64 bajta od 208.247.106.187: icmp_seq=3 ttl=243 vrijeme=55,339 ms

64 bajta od 208.247.106.187: icmp_seq=4 ttl=243 vrijeme=69,865 ms

www.php.net ping statistika --

Preneseno 5 paketa. Primljeno 5 paketa. 0% gubitka paketa

povratno min/prosj./max/stddev - 55.339/63.662/70.779/6.783 ms

Povratak

Postoji još jedan način izvršavanja naredbi sustava koji ne zahtijeva pozivanje funkcija - izvršena naredba je zatvorena u pozadinske oznake (` `), a rezultati njenog rada prikazani su u pregledniku. Primjer:

ispis"

$izlaz
";

Ovaj isječak ispisuje u preglednik sadržaj direktorija u kojem se nalazi skripta.

Interni parametar ping -c 5 (-n 5 na Windows sustavu) specificira broj puta za ispitivanje poslužitelja.

Ako samo želite vratiti sirovi izlaz naredbe, upotrijebite dolje opisanu funkciju passthru().

Funkcija passthru() radi na isti način kao i exec(), s jednom iznimkom - automatski daje rezultate naredbe. Sintaksa funkcije passthru() je:

void passthru (naredba niza [, int return])

Ako je neobavezni parametar povrata proslijeđen u pozivu passthru(), ova varijabla se postavlja na povratni kod izvršene naredbe.

escapeshellcmd()

Funkcija escapeshellcmd() izbjegava sve potencijalno opasne znakove koje korisnik može unijeti (na primjer, u HTML obrazac) kako bi izvršio naredbe exec(), passthru(), system() ili popen(). Sintaksa:

string escapeshellcmd (naredba niza)

Korisnički unos uvijek treba tretirati s određenim stupnjem opreza, ali čak i tako, korisnici mogu unijeti naredbe koje će izvršiti funkcije pokretanja naredbi sustava. Razmotrite sljedeći isječak:

$user_input = `rm -rf *`; // Izbrišite roditeljski direktorij i sve njegove poddirektorije

exec($user_input); // Izvrši $user_input !!!

Ako se ne poduzmu nikakve mjere opreza, takva naredba će dovesti do katastrofe. Međutim, možete koristiti funkcije escapeshellcmd() za izbjegavanje korisničkog unosa:

$user_input = `rm - rf *`; // Izbrišite roditeljski direktorij i sve njegove poddirektorije

exec(escapeshellcmd($user_input)); // Izbjegnite opasne znakove

Funkcija escapeshellcmd() izbjegava znak * kako bi spriječila katastrofalne posljedice izvođenja naredbe.

Sigurnost je jedan od najvažnijih aspekata programiranja na webu, pa sam cijelo poglavlje posvetio ovoj temi i njenom odnosu s PHP programiranjem. Za više informacija pogledajte 16. poglavlje.

Rad s datotečnim sustavom

PHP ima funkcije za pregled i izvođenje raznih operacija nad datotekama na poslužitelju. Informacije o atributima datoteke poslužitelja (lokacija, vlasnik i privilegije) često su korisne.

Funkcija basename() izdvaja naziv datoteke iz proslijeđenog punog imena. Sintaksa za funkciju basename() je:

osnovno ime niza (puno ime niza)

Ekstrahiranje osnovnog naziva datoteke iz punog naziva vrši se na sljedeći način:

$path = "/usr/local/phppower/htdocs/index.php"; $datoteka = osnovno ime ($put); // $file = "index.php"

Zapravo, ova funkcija uklanja put iz punog naziva i ostavlja samo naziv datoteke.

Funkcija getlastmod() vraća zadnji datum i vrijeme izmjene stranice s koje je funkcija pozvana. Sintaksa funkcije getlastmod() je:

int getlastmod(void)

Vraćena vrijednost odgovara UNIX formatu datuma/vremena, a za formatiranje možete koristiti funkciju date(). Sljedeći isječak ispisuje datum zadnje izmjene stranice:

echo "Posljednja izmjena: ".date("H:i:s a". getlastmod());

Funkcija stat() vraća indeksirani niz s detaljnim informacijama o datoteci s navedenim imenom:

niz stat (niz naziv datoteke)

U elementima niza vraćaju se sljedeće informacije:

0 uređaja

2 Način zaštite indeksnog čvora

3 Broj poveznica

4 ID korisnika

5 ID grupe vlasnika

6 Tip Inode uređaja

7 Veličina u bajtovima

8 Vrijeme posljednjeg pristupa

9 Vrijeme posljednje izmjene

10 Vrijeme zadnje izmjene

11 Veličina bloka za ulaz/izlaz u datotečnom sustavu

12 Broj dodijeljenih blokova

Stoga, ako želite znati kada je datoteci zadnji put pristupljeno, pogledajte element 8 vraćenog niza. Razmotrimo primjer:

$file - "datoteka podataka.txt";

popis($dev, $inode, $inodep, $nlink, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime,

$bsize) = stat($datoteka);

print "$file je $size bajtova.
";

print "Vrijeme posljednjeg pristupa: $atime
";

print "Vrijeme zadnje izmjene: $mtime
";

Proizlaziti:

popen.php ima 289 bajtova.

Vrijeme posljednjeg pristupa: 15. kolovoza 2000. 12:00:00

Vrijeme zadnje izmjene: 15. kolovoza 2000. 10:07:18

U ovom primjeru koristio sam konstrukciju list() za imenovanje svake povratne vrijednosti. Naravno, isto tako možete vratiti niz, proći kroz elemente i prikazati sve informacije koje su vam potrebne. Kao što vidite, funkcija stat() omogućuje vam da dobijete razne korisne informacije o datoteci.

Prikaz i promjena karakteristika datoteka

Svaka datoteka na sustavima obitelji UNIX ima tri važne karakteristike:

  • pripadnost skupini;
  • vlasnik;
  • dopuštenja.

Sve ove karakteristike mogu se mijenjati pomoću odgovarajućih PHP funkcija. Značajke opisane u ovom odjeljku ne rade na sustavima obitelji Windows.

Ako ste novi u UNIX operativnim sustavima, informacije o karakteristikama UNIX datotečnog sustava možete pronaći na http://sunsite.auc.dk/linux-newbie/FAQ2.htm. Teme vlasništva grupe, vlasništva i dopuštenja obuhvaćene su u odjeljku 3.2.6.

Funkcija chgrp() pokušava promijeniti grupu kojoj data datoteka pripada. Sintaksa funkcije chgrp():

int chgrp (niz naziv datoteke, mješovita grupa)

Funkcija filegroup() vraća ID grupe vlasnika datoteke s navedenim imenom ili FALSE u slučaju pogreške. Sintaksa funkcije filegroup() je:

int filegroup (niz naziv datoteke)

Funkcija chmod() mijenja dopuštenja datoteke s navedenim imenom. Sintaksa za funkciju chmod() je:

int chmod (niz naziv datoteke, int dopuštenja)

Dozvole su navedene u oktalnom obliku. Specifičnosti postavljanja parametra funkcije chmod () prikazane su u sljedećem primjeru:

chmod("datoteka_podataka.txt", g+r); // Ne radi

chmod("datoteka_podataka.txt", 766); // Ne radi

chmod("datoteka_podataka.txt", 0766); // Radni

Funkcija fileperms() vraća dopuštenja datoteke s navedenim imenom ili FALSE u slučaju pogreške. Sintaksa funkcije fileperms() je:

int fileperms (niz naziv datoteke)

Funkcija chown() pokušava promijeniti vlasnika datoteke. Pravo promjene vlasnika datoteke ima samo povlašteni korisnik. Sintaksa funkcije chown() je:

int chown (naziv datoteke, mješoviti korisnik)

Funkcija fileowner() vraća korisnički ID za vlasnika datoteke s navedenim imenom. Sintaksa funkcije fileowner() je:

int vlasnik datoteke (niz naziv datoteke)

Kopiranje i preimenovanje datoteka

Ostale korisne funkcije sustava koje PHP skripte mogu izvoditi uključuju kopiranje i preimenovanje datoteka na poslužitelju. Ove operacije izvode dvije funkcije: copy() i rename().

Kopiranje datoteke u PHP skriptu jednako je jednostavno kao i korištenje UNIX naredbe cp. Problem je riješen PHP-ovom funkcijom copy(). Sintaksa funkcije copy() je:

int kopija (izvor niza, odredište niza)

Funkcija copy() pokušava kopirati izvornu datoteku u odredišnu datoteku; vraća TRUE kod uspjeha, FALSE kod neuspjeha. Ako ciljna datoteka ne postoji, funkcija copy() je kreira. Sljedeći primjer pokazuje kako napraviti sigurnosnu kopiju datoteke pomoću funkcije copy():

$data_file = "data.txt";

copy($data_file. $data_file".bak") ili die("Nije moguće kopirati $data_file");

Funkcija rename() preimenuje datoteku. Vraća TRUE u slučaju uspjeha, FALSE u slučaju neuspjeha. Sintaksa funkcije rename():

bool preimenuj (niz staro_naziv, niz novo_naziv)

Primjer preimenovanja datoteke s funkcijom rename():

$data_file = "data.txt";

rename($data file, $datafile".old") ili die ("Ne mogu preimenovati datoteku $data");

Brisanje datoteka

Funkcija unlink() uklanja datoteku s navedenim imenom. Sintaksa:

int unlink (datoteka niza)

Ako radite s PHP-om na Windows sustavu, postoje neki problemi pri korištenju ove funkcije. U tom slučaju možete koristiti gore opisanu funkciju system() i izbrisati datoteku naredbom DOS del:

system("ime datoteke.txt");

Rad s imenicima

PHP funkcije omogućuju vam pregled sadržaja direktorija i navigaciju kroz njih. Popis 7.8 prikazuje tipičnu strukturu UNIX direktorija.

Listing 7.8. Tipična struktura imenika

Funkcija dirname() nadopunjuje basename() -- izvlači stazu iz potpuno kvalificiranog naziva datoteke. Sintaksa funkcije dirname():

string dirname (put niza)

Primjer korištenja dirname() za izdvajanje staze iz potpuno kvalificiranog imena:

$path = "/usr/locla/phppower/htdocs/index.php";

$datoteka = dirname($put); // $file = "usr/local/phppower/htdocs"

Funkcija dirname() se ponekad koristi zajedno s varijablom $SCRIPT_FILENAME kako bi se dobila puna staza do skripte iz koje se naredba izvršava:

$dir - ime dirname($SCRIPT_FILENAME);

Funkcija is_dir() provjerava je li datoteka s navedenim imenom direktorij:

bool is_dir (niz naziv datoteke)

Sljedeći primjer koristi strukturu direktorija iz popisa 7.8:

$ isdir = is_dir("index.html"); // Vraća FALSE

$isdir = is_dir("knjiga"); // Vraća TRUE

Funkcija mkdir() čini isto što i UNIX naredba istog imena - stvara novi direktorij. Sintaksa funkcije mkdir() je:

int mkdir (puta niza, int način)

Parametar puta određuje stazu za stvaranje novog direktorija. Ne zaboravite završiti parametar imenom novog imenika! Parametar načina određuje dopuštenja dodijeljena kreiranom direktoriju.

Baš kao što funkcija fopen() otvara ručku za danu datoteku, funkcija opendir() otvara ručku za direktorij. Sintaksa funkcije opendir() je:

int opendir (put niza)

Funkcija closeir() zatvara ručku direktorija proslijeđenu kao parametar. Sintaksa funkcije closeir():

void closeir(int directory_manipulator)

Funkcija readdir() vraća sljedeći element zadanog direktorija. Sintaksa:

string readdir(int directory_manipulator)

Pomoću ove funkcije možete jednostavno prikazati sve datoteke i poddirektorije u trenutnom direktoriju:

$dh = opendir(" .);

dok ($file = readdir($dh)) :

ispiši "$file
"; do kraja;

Funkcija chdir() radi baš kao naredba UNIX cd, po tome što se mijenja u direktorij naveden parametrom. Sintaksa funkcije chdir():

int chdir (direktorij nizova)

U sljedećem primjeru idemo do knjige/poddirektorijuma i prikazujemo njegov sadržaj:

$newdir = "knjiga";

chdir($newdir) ili die("Nije se moglo promijeniti u direktorij ($newdir)"); $dh = opendir(" . ");

dok ($file = readdir($dh)) ;

ispiši "$file
";

Funkcija rewlnddir() postavlja pokazivač trenutne pozicije na početak direktorija koji otvara funkcija opendir(). Sintaksa funkcije rewinddir():

void rewinddir(int dir_nipulator)

Projekt 1: Jednostavan brojač pogodaka

Skripta predstavljena u ovom odjeljku broji broj posjeta za stranicu na kojoj se nalazi. Prije nego što prijeđete na kod u Popisu 7-9, pregledajte algoritam napisan u pseudokodu:

  1. Postavite varijablu $access na naziv datoteke koja će pohraniti vrijednost brojača.
  2. Koristite funkciju file() da pročitate sadržaj $access u nizu $visits. Prefiks @ ispred naziva funkcije potiskuje moguće pogreške (na primjer, nepostojanje datoteke s danim imenom).
  3. Postavite varijablu $current_visitors na vrijednost prvog (i jedinog) elementa polja $visits.
  4. Povećajte vrijednost $current_visitors za 1.
  5. Otvorite datoteku $access za pisanje i postavite pokazivač trenutne pozicije na početak datoteke.
  6. Upišite vrijednost $current_visitors u datoteku $access.
  7. Zatvorite manipulator pozivajući se na datoteku $access.

Listing 7.9. Jednostavan brojač pogodaka

// Scenarij: jednostavan brojač pogodaka

// Svrha: spremanje broja pogodaka u datoteci

$access = "hits.txt"; // Naziv datoteke bira se proizvoljno

$current_visitors = $posjeti; // Dohvati prvi (i jedini) element

++$current_visitors; // Povećaj broj pogodaka

$fh = fopen($pristup. "w"); // Otvorite hits.txt datoteku i postavite

// pokazivač na trenutnu poziciju na početku datoteke

@fwrite($fh, $current_visitors);// Upiši novu vrijednost brojača

// za datoteku "hits.txt"

fclose($fh); // Zatvori rukohvat datoteke "hits.txt"

Projekt 2: izrada karte mjesta

Skripta u Listingu 7-10 gradi kartu web-mjesta, hijerarhijski prikaz svih mapa i datoteka na poslužitelju, počevši od danog direktorija. Prilikom izračunavanja uvlaka elemenata koji čine kartu stranice koriste se funkcije definirane u ovom i prethodnim poglavljima. Prije nego što nastavite s programom, pregledajte algoritam napisan u pseudokodu:

  1. Deklarirajte servisne varijable za pohranjivanje roditeljskog direktorija, naziv grafičke datoteke sa slikom mape, naziv stranice i zastavicu OS poslužitelja (Windows ili neki drugi sustav).
  2. Deklarirajte funkciju display_directory() koja čita sadržaj direktorija i formatira ga za prikaz u pregledniku.
  3. Konstruirajte put direktorija spajanjem imena proslijeđenog u varijablu $dir1 s $dir.
  4. Otvorite imenik i pročitajte njegov sadržaj. Oblikujte nazive direktorija i datoteka i prikažite ih u pregledniku.
  5. Ako je trenutna datoteka direktorij, rekurzivno pozovite funkciju display_directory() i proslijedite joj naziv novog direktorija za prikaz. Izračunajte uvlačenje korišteno pri formatiranju izlaza.

Ako datoteka nije direktorij, formatirana je za prikaz kao hiperveza (a također se izračunava uvlačenje korišteno pri oblikovanju).

Listing 7.10. program sitemap.php

// Datoteka: sitemap.php

// Svrha: izrada sitemapa

// Imenik iz kojeg treba početi graditi kartu

$beg_path = "C:\Program FilesVApache Group\Apache\htdocs\phprecipes";

// Datoteka sa grafičkom slikom mape.

// Put mora biti relativan* u odnosu na korijenski direktorij Apache poslužitelja

$folder_location = "C:\Moji dokumenti\PHP za programere\FINAL CHPS\grafika\folder.gif";

// Tekst u naslovu prozora $page_name = "PHPRecipes SiteMap";

// Na kojem će se sustavu koristiti skripta - Linux ili Windows?

// (0 - Windows; 1 - Linux)

$usingjinux = 0;

// Funkcija: display_directory

// Svrha: čitanje sadržaja direktorija specificiranog parametrom

// $dir1, nakon čega slijedi formatiranje hijerarhije direktorija i datoteka.

// Funkcija se može pozvati rekurzivno.

funkcija display_directory ($dir1, $folder_location, $using_linux, $init_depth) (

// Put ažuriranja

sdh = opendir($dir);

while($file = readdir($dh)) :

// Elementi direktorija "." i ".." ne izlaze.

if (($file != ".") && ($file != "..")) :

ako ($using_linux == 0):

$depth = explode("\\", $dir): inače:

$depth = eksplodirati ("/", $dir); završi ako; $curtent_depth = sizeof($dubina);

// Izgradite put prema pravilima operativnog sustava koji se koristi. ako ($using_linux == 0):

$tab_depth = $current_deptn - $init_depth;

$file = $dir. "\\", $datoteka; drugo:

$file = $dir. "/", $datoteka; završi ako;

// Sadrži li varijabla $file direktorij? if (je dir($file)) :

// Izračunaj padding

dok ($x< ($tab_depth * 2)) :

$x++; endwhile;

ispis"

".basename($file)."
";

// Brojač prirasta

// Rekurzivni poziv funkcije display_directory().

display_directory($file, $folder_location, $using_linux, $init_depth);

// Nije imenik

// Izgradite stazu prema pravilima korištenog

// operacijski sustav.

ako ($using_linux == 0):

$tab_depth = ($current_depth - $init_depth) - 2; $x = 0;

// Izračunaj padding

dok ($x< (($tab_depth * 2) + 5)) :

ispis" ".basename($file)."
";

ispis" ".basename($file)."
";

završi ako; // Is_dir(file) endif: // Ako ! "." ili ".."

// Zatvori direktorij closeir($dh);

<? print "$page_name"; ?>

// Izračunaj početni padding

ako ($using_linux == 0):

$depth = explode("\\", $beg_path);

$depth = explode("/", $beg_path);

$init_depth = sizeof($dubina);

display_directory($beg_path, $folder_location, $using_linux, $init_depth);

Na sl. Slika 7.1 prikazuje izlaz skripte za katalog s nekoliko poglavlja u ovoj knjizi.

Riža. 7.1. Prikaz strukture direktorija na poslužitelju pomoću skripte sitemap.php

Rezultati

Ovo poglavlje predstavlja mnoge PHP alate za rad s datotekama. Posebno smo razmotrili sljedeća pitanja:

  • provjera postojanja datoteka;
  • otvaranje i zatvaranje datoteka i ulazno/izlaznih tokova;
  • pisanje u datoteku i čitanje iz nje;
  • preusmjeravanje datoteke na izlazni tok;
  • pokretanje vanjskih programa;
  • operacije datotečnog sustava.

Materijal u ovom poglavlju postavio je pozornicu za sljedeće poglavlje, Stringovi i regularni izrazi, jer su obrada stringova i I/O operacije vrlo usko povezani u razvoju web aplikacija.

Posljednje ažuriranje: 1.11.2015

Kao i većina programskih jezika, PHP podržava datoteke, koje su jedan od načina pohranjivanja informacija.

Čitanje i pisanje datoteka

Otvaranje i zatvaranje datoteka

Funkcija fopen() definirana je u PHP-u za otvaranje datoteka. Ima sljedeću definiciju: resurs fopen(string $filename, string $mode) . Prvi parametar $filename predstavlja put do datoteke, a drugi parametar predstavlja način otvaranja. Ovisno o svrsi otvaranja i vrsti datoteke, ovaj parametar može imati sljedeće vrijednosti:

    "r" : Datoteka se otvara samo za čitanje. Ako datoteka ne postoji, vraća false

    "r+" : Datoteka se otvara samo za čitanje i može se pisati. Ako datoteka ne postoji, vraća false

    "w" : Datoteka je otvorena za pisanje. Ako takva datoteka već postoji, onda se prepisuje, ako ne, onda se kreira.

    "w+" : Datoteka se otvara za pisanje s čitljivošću. Ako takva datoteka već postoji, onda se prepisuje, ako ne, onda se kreira.

    "a" : Datoteka je otvorena za pisanje. Ako takva datoteka već postoji, tada se podaci zapisuju na kraj datoteke, a stari podaci ostaju. Ako datoteka ne postoji, onda je stvorena

    "a+" : Datoteka se otvara za čitanje i pisanje. Ako datoteka već postoji, podaci se dodaju na kraj datoteke. Ako datoteka ne postoji, kreira se

Rezultat funkcije fopen je deskriptor datoteke. Ova ručka se koristi za operacije na datoteci i za njeno zatvaranje.

Kada se završi, datoteka se mora zatvoriti pomoću funkcije fclose(), koja kao parametar uzima deskriptor datoteke. Na primjer, otvorimo i zatvorimo datoteku:

$fd = fopen("form.php", "r") ili die("Ne mogu otvoriti datoteku"); fclose($fd);

Konstrukt or die("tekst pogreške") omogućuje vam da prekinete skriptu i prikažete neku poruku o pogrešci ako funkcija fopen ne može otvoriti datoteku.

Čitanje datoteke

Za čitanje datoteke može se koristiti nekoliko funkcija. Za čitanje redak po red koristi se funkcija fgets() koja uzima deskriptor datoteke i vraća jedan redak za čitanje. Idemo red po redak kroz cijelu datoteku:

Svaki put kada pozovete fgets(), PHP će postaviti pokazivač na kraj pročitanog niza. Za praćenje kraja datoteke koristi se funkcija feof(), koja vraća true kada datoteka završi. I dok se ne dostigne kraj datoteke, možemo koristiti funkciju fgets().

Čitanje cijele datoteke

U ovom slučaju, ne moramo eksplicitno otvoriti datoteku, dobiti rukohvat, a zatim zatvoriti datoteku.

Blokiraj čitanje

Također možete izvesti blok po blok čitanje, odnosno pročitati određeni broj bajtova iz datoteke pomoću funkcije fread():

Funkcija fread() uzima dva parametra: deskriptor datoteke za čitanje i broj bajtova za čitanje. Prilikom čitanja bloka, pokazivač u datoteci se pomiče na kraj ovog bloka. A također uz pomoć funkcije feof () možete pratiti završetak datoteke.

Napišite datoteku

Za pisanje datoteke koristi se funkcija fwrite() koja zapisuje niz u datoteku:

Druga funkcija fputs() radi slično:

Rad s pokazivačem datoteke

Prilikom otvaranja datoteke za čitanje ili pisanje u "w" načinu rada, pokazivač u datoteci se postavlja na početak. Prilikom čitanja podataka, PHP pomiče pokazivač u datoteci na kraj čitanog bloka podataka. Međutim, također možemo ručno manipulirati pokazivačem u datoteci i postaviti ga na proizvoljno mjesto. Za to morate koristiti funkciju fseek, koji ima sljedeću formalnu definiciju:

int fseek (resurs $handle , int $offset [, int $whence = SEEK_SET ])

Parametar $handle predstavlja ručku datoteke. Parametar $offset je pomak u bajtovima u odnosu na početak datoteke iz koje će početi čitanje/pisanje. Treći neobavezni parametar određuje kako se pomak treba postaviti. Može imati tri vrijednosti:

    SEEK_SET : zadana vrijednost, postavlja pomak na pomak bajtova od početka datoteke

    SEEK_CUR : postavlja pomak na pomak bajtova u odnosu na početak trenutne pozicije u datoteci

    SEEK_END : postavlja pomak na pomak bajtova od kraja datoteke

Funkcija fseek() vraća 0 ako je pokazivač uspješno postavljen i -1 ako ne uspije.

Primjer korištenja funkcije:

$fd = fopen("hello.txt", "w+") ili die("nije uspjelo otvaranje datoteke"); $str = "Zdravo svijete!"; // niz za pisanje fwrite($fd, $str); // upisujemo niz na početak fseek($fd, 0); // stavi pokazivač datoteke na početak fwrite($fd, "Oink"); // napiši redak na početku fseek($fd, 0, SEEK_END); // stavi pokazivač na kraj fwrite($fd, $str); // napiše još jedan redak na kraju fclose($fd);

preuzimanja $_ (8)

Moram učitati PHP datoteku u varijablu. Na primjer include();

Prenio sam jednostavnu html datoteku poput ove:

$Vdata = file_get_contents("textfile.txt");

Ali sada moram učitati PHP datoteku.

Odgovori

Ako vaša datoteka ima povratnu izjavu:

"Afeganistão", "ZA" => "África do Sul", ... "ZW" => "Zimbabué");

Ovu varijablu možete dobiti ovako:

$data = uključuje $filePath;

Alternativno, možete pokrenuti međuspremnik izlaza, napraviti uključiti / zahtijevati i zatim zaustaviti međuspremnik. S ob_get_contents() možete jednostavno dobiti stvari koje je emitirala druga PHP datoteka u varijablu.

Ako želite preuzeti datoteku bez pokretanja putem web poslužitelja, sljedeće bi trebalo raditi.

$string = eval(file_get_contents("file.php"));

Zatim će se učitati sadržaj datoteke. PHP datoteka mora biti u potpunosti oblikovana s oznakamaDa bi eval to procijenio.

Pretpostavljam što želiš dobiti PHP generiran sadržaj, ako je tako:

$Vdata = file_get_contents("http://VAŠ_HOST/VAŠ/DATOTEKA.php");

Inače, ako želiš Izvorni kod PHP datoteke, ovo je isto kao i .txt datoteka:

$Vdata = file_get_contents("put/do/VAŠA/DATOTEKA.php");

U teoriji možete jednostavno koristiti fopen, a zatim koristiti stream_get_contents.

$stream = fopen("file.php","r"); $string = stream_get_contents($stream); fclose($stream);

Ako koristite http://, kao što je sugerirao eyel, moći ćete čitati samo izlaz PHP skripte. PHP skriptu možete čitati samo ako je na istom poslužitelju kao i vaša skripta. Tada možete koristiti nešto poput

$Vdata = file_get_contents("/path/to/your/file.php");

Evo kako ja to radim (postoji mnogo načina):

  1. Pretvorba podataka u JSON
  2. poziv AJAX da dobijete datoteku JSON
  3. transformacija JSON u objekt javascript

KORAK 1

connect_error) ( die("Povezivanje nije uspjelo: " . $conn->connect_error); ) $sql = "ODABIR ID, ime, sliku S telefona"; $rezultat = $conn->upit($sql); while($red =$result->fetch_assoc())( $v=$red; ) echo json_encode($v); $conn->close(); ?>

KORAK 2

Funkcija showUser(fnc) ( var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() ( if (this.readyState == 4 && this.status == 200) ( // KORAK 3 var p=JSON.parse( this.responseText;) ) )

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contents- Čita sadržaj datoteke u niz

Opis

Niz file_get_contents (string $filename [, bool $use_include_path = lažno [, resurs $kontekst [, int $offset = -1 [, int $maxlen ]]]])

Ova funkcija je slična funkciji datoteka() s jedinom razlikom što file_get_contents() vraća sadržaj datoteke u nizu, počevši od navedenog pomaka do maxlen bajtova. U slučaju neuspjeha, file_get_contents()će se vratiti LAŽNO.

Upotreba funkcije file_get_contents() najpoželjnije je ako trebate dobiti cijeli sadržaj datoteke, jer za poboljšanje performansi funkcija koristi tehniku ​​preslikavanja datoteke u memoriju (memory mapping), ako to podržava vaš operativni sustav.

Komentar:

Ako otvorite URI koji sadrži posebne znakove kao što je razmak, morate kodirati URI s urlencode().

Popis parametara

Naziv datoteke koja se čita.

Use_include_path

Komentar:

Od PHP 5 možete koristiti konstantu FILE_USE_INCLUDE_PATH za traženje datoteke u uključenoj stazi.

kontekst

Važeći resurs konteksta stvoren funkcijom stream_context_create(). Ako nema potrebe za korištenjem posebnog konteksta, ovaj parametar možete preskočiti prosljeđivanjem vrijednosti NULL.

Pomak od kojeg se počinje čitati izvorni stream.

Pretraživanje pomaka nije podržano pri radu s udaljenim datotekama. Pokušaj pronalaženja pomaka na ne-lokalnim datotekama može funkcionirati za male pomake, ali ovaj rezultat je nepredvidljiv jer radi na toku s međuspremnikom.

Maksimalna veličina podataka za čitanje. Zadano je čitanje dok se ne dostigne kraj datoteke. Imajte na umu da se ova postavka primjenjuje i na stream s filtrima.

Povratne vrijednosti

Funkcija vraća pročitane podatke ili LAŽNO u slučaju greške.

Pažnja

Ova funkcija se može vratiti kao boolean LAŽNO, i ne-booleovu vrijednost na koju se prebacuje LAŽNO. Pogledajte Boolean tip za više informacija. Koristite === operator da testirate vrijednost koju vraća ova funkcija.

Greške

Generirat će se pogreška razine E_UPOZORENJE ako se parametar naziva datoteke ne može pronaći, parametar maxlength je manji od nule ili pretraživanje pomaka u toku ne uspijeva.

Primjeri

Primjer #1 Dobijte i prikažite izvorni kod početne stranice web stranice

$homepage = file_get_contents("http://www.example.com/");
echo $početna stranica ;
?>

Primjer #2 Pronalaženje datoteka u include_path

// <= PHP 5
$file = file_get_contents("./people.txt" , istina);
// > PHP 5
$file = file_get_contents("./people.txt" , FILE_USE_INCLUDE_PATH );
?>

Primjer #3 Čitanje dijela datoteke

// Pročitajte 14 znakova, počevši od znaka 21
$section = file_get_contents ("./people.txt" , NULL , NULL , 20 , 14 );
var_dump($odjeljak);
?>

Rezultat izvođenja ovog primjera bit će otprilike ovako:

niz (14) "lle Bjori Ro"

Beispiel #4 Korištenje konteksta strujanja

// Kreiraj nit
$opts = niz (
"http" =>niz(
"method" => "GET" ,
"header" => "Prihvati-jezik: en\r\n" .
"Kolačić: foo=bar\r\n"
);

$context = stream_context_create($opts);

// Otvorite datoteku koristeći gore postavljena HTTP zaglavlja
$file = file_get_contents ("http://www.example.com/" , false , $context );
?>

Close_notify . PHP će to prijaviti kao "SSL: Fatal Protocol Error" u trenutku kada dođete do kraja podataka. Da biste to zaobišli, morate postaviti error_reporting na razinu koja isključuje E_WARNING. PHP verzije 4.3.7 i starije mogu otkriti da je problematični IIS na strani poslužitelja prilikom otvaranja streama pomoću omotača https:// i ne prikazuje upozorenje. Ako koristite fsockopen() za stvaranje ssl:// socket, odgovorni ste za identificiranje i suzbijanje ovog upozorenja.

Vrhunski povezani članci