Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Vijesti
  • PHP učitaj datoteku u varijablu. Skripta fajla - Kako učitati PHP fajl u varijablu? Izbor je na vama

PHP učitaj datoteku u varijablu. Skripta fajla - Kako učitati PHP fajl u varijablu? Izbor je na vama

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

Ali sada moram da učitam PHP fajl.

Pretpostavljam da želiš da dobiješ PHP generisani sadržaj, ako je istina:

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

Inače, ako želite da dobijete Izvorni kod PHP datoteke, ovo je isto kao i .txt fajl:

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

Ob_start(); uključiti "yourfile.php"; $myvar = ob_get_clean();

Ako koristite http:// kao što je predložio eyel, moći ćete čitati samo izlaz PHP skripte. PHP skriptu možete čitati samo ako je na istom serveru kao i vaša skripta. Onda možete koristiti nešto slično

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

Ako želite da preuzmete datoteku bez pokretanja preko web servera, sljedeće bi trebalo raditi.

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

Sadržaj datoteke će tada biti preuzet. PHP fajl mora biti u potpunosti formiran sa 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 započeti baferovanje izlaza, uključiti/zahtevati, a zatim zaustaviti baferovanje. Sa ob_get_contents() možete jednostavno prebaciti stvari koje je izbacila druga PHP datoteka u varijablu.

file_get_contents() neće raditi ako vaš server onemogućeno allow_url_fopen. Većina dijeljenih web hostova je po defaultu onemogućena zbog sigurnosnih rizika. Osim toga, u PHP6 opcija allow_url_fopen više neće postojati i sve funkcije će raditi kao da su trajno onemogućene. Dakle, ovo je vrlo loša metoda za korištenje.

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

Pre nego što pokušate da radite sa datotekom, preporučljivo je da se uverite da ona postoji. Za rješavanje ovog problema obično se koriste dvije funkcije:

file_exists() i is_file().

Funkcija file_exists() provjerava postoji li dati fajl. Ako datoteka postoji, funkcija vraća TRUE, u suprotnom vraća FALSE. Sintaksa funkcije file_exists() je:

bool file_exists (datoteka niza)

Primjer provjere postojanja datoteke:

if (!file_exists($filename)) :

print "Datoteka $filename ne postoji!";

is_file()

Is_file() funkcija provjerava postojanje date datoteke i može li se čitati/pisati. U suštini, is_file() je robusnija verzija file_exists() koja provjerava ne samo da li datoteka postoji, već i da li može čitati i pisati podatke:

bool is_file (datoteka niza)

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

$file = "somefile.txt";

if (is_file($file)) :

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

print "Datoteka $file ne postoji ili nije važeća datoteka!";

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

Funkcija filesize() vraća veličinu (u bajtovima) datoteke sa datim imenom ili FALSE u slučaju greške. Sintaksa funkcije Filesize():

int veličina datoteke (niz ime datoteke)

Recimo da želite da odredite veličinu pastry.txt datoteke. Da biste dobili potrebne informacije, možete koristiti funkciju filesize():

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

Prikazuje se sljedeći rezultat:

Pastry.txt ima 179 bajtova.

Prije nego što možete izvršiti operacije nad datotekom, morate je otvoriti i pridružiti je rukovatelju datotekama, a nakon što završite rad s datotekom, morate je zatvoriti. Ove teme su obrađene u sljedećem odjeljku.

Otvaranje i zatvaranje fajlova

Prije nego što možete izvesti I/O na datoteci, morate je otvoriti pomoću fopen().

Funkcija fopen() otvara datoteku (ako postoji) i vraća cijeli broj -- pozvan manipulator datotekama(ručnik datoteke). sintaksa funkcije fopen():

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

Datoteka koja se otvara može biti na lokalnom sistemu datoteka, postojati kao standardni ulazno/izlazni tok ili predstavljati datoteku na udaljenom sistemu prihvaćenom putem HTTP-a ili FTP-a.

Parametar datoteke može se specificirati u nekoliko oblika, navedenih u nastavku:

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

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

Ako parametar počinje prefiksom http://, funkcija otvara HTTP vezu sa serverom i vraća ručicu za navedenu datoteku.

Ako parametar počinje sa ftp:// prefiksom, funkcija otvara FTP vezu sa serverom i vraća ručicu za navedenu datoteku. Postoje dvije stvari na koje treba obratiti posebnu pažnju u ovom slučaju: Ako server ne podržava pasivni FTP način, poziv fopen() neće uspjeti. Štaviše, FTP datoteke se otvaraju za čitanje ili pisanje.

Kada radi u pasivnom režimu, YAR server čeka konekcije od klijenata. Kada radi u aktivnom režimu, server sam uspostavlja vezu sa klijentom. Zadani je obično aktivan način rada.

Parametar mode određuje mogućnost čitanja i pisanja u datoteku. U tabeli 7.1 navodi neke vrijednosti koje određuju način otvaranja datoteke.

Tabela 7.1. Načini otvaranja datoteka

Mode Opis
Samo čitanje. Pokazivač trenutne pozicije je postavljen na početak datoteke
r+ Citaj i pisi. Pokazivač trenutne pozicije je postavljen na početak datoteke
w Samo snimanje. Trenutni pokazivač pozicije je postavljen na početak datoteke, a cijeli sadržaj datoteke je uništen. Ako datoteka ne postoji, funkcija pokušava da je kreira
w+ Citaj i pisi. Trenutni pokazivač pozicije je postavljen na početak datoteke, a cijeli sadržaj datoteke je uništen. Ako datoteka ne postoji, funkcija pokušava da je kreira
a Samo snimanje. Pokazivač trenutne pozicije je postavljen na kraj datoteke. Ako datoteka ne postoji, funkcija pokušava da je kreira
a+ Citaj i pisi. Pokazivač trenutne pozicije je postavljen na kraj datoteke. Ako datoteka ne postoji, funkcija pokušava da je kreira

Ako je opcioni treći parametar include_path 1, tada je putanja datoteke relativna u odnosu na direktorij uključivanja naveden u datoteci php.ini (pogledajte Poglavlje 1).

Ispod je primjer otvaranja datoteke pomoću funkcije fopen(). Poziv die(), koji se koristi u kombinaciji sa fopen(), daje poruku o grešci ako se datoteka ne može otvoriti:

$file = "userdata.txt"; // Neki fajl

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

Sljedeći isječak otvara vezu sa PHP lokacijom (http://www.php.net):

$site = "http://www.php.net": // Server dostupan preko HTTP-a

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

Nakon završetka rada, datoteku uvijek treba zatvoriti pomoću fclose().

Funkcija fclose() zatvara datoteku sa datim manipulatorom. Ako je zatvaranje uspješno, vraća se TRUE; ako je zatvaranje neuspješno, vraća se FALSE. sintaksa funkcije fclose():

int fclose (int manipulator)

Funkcija fclose() uspješno zatvara samo one datoteke koje su prethodno otvorile funkcije fopen() ili fsockopen(). Primjer zatvaranja fajla:

$file = "userdata.txt";

if (file_exists($file)) :

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

// Izvođenje operacija datoteka

print "Datoteka Sfile ne postoji!";

Pišite u fajl

Postoje dvije glavne operacije koje se izvode na otvorenim datotekama: čitanje i pisanje.

Funkcija is_writeable() potvrđuje da datoteka postoji i da se može pisati. Mogućnost upisivanja se provjerava i za datoteku i za direktorij. Sintaksa funkcije is_writeable() je:

bool is_writeable (string fajl)

Jedna važna stvar koju treba napomenuti je da će PHP najvjerovatnije raditi pod korisničkim ID-om koji koristi web server (obično "niko"). Primjer korištenja is_writeable() dat je u opisu funkcije fwrite().

Funkcija fwrite() upisuje sadržaj varijable stringa u datoteku koju je specificirao rukovalac datoteke. sintaksa funkcije fwrite():

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

Ako se pri pozivanju funkcije prosljeđuje opcijski parametar dužine, pisanje se zaustavlja ili nakon upisivanja navedenog broja znakova ili kada se dostigne kraj reda. Provjera da li se u datoteku može pisati prikazano 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($filename, "a+");

// Zapisuje sadržaj $data u datoteku

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

// Zatvori datoteku

fclose($fh); ostalo:

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 pseudonim za fwrite() i ima potpuno istu sintaksu. sintaksa funkcije fputs():

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

Lično više volim da koristim fputs(). Treba imati na umu da je ovo samo pitanje stila i nema nikakve veze s bilo kakvim razlikama između ove dvije funkcije.

Čitanje iz datoteke

Bez sumnje, čitanje je najvažnija operacija koja se izvodi na datotekama. Ispod su neke funkcije koje čine čitanje iz datoteke efikasnijim. Sintaksa ovih funkcija gotovo potpuno kopira sintaksu sličnih funkcija snimanja.

Funkcija i s_readable() omogućava vam da potvrdite da datoteka postoji i da je čitljiva. Čitljivost se provjerava i za datoteku i za direktorij. Sintaksa funkcije is_readable() je:

boo! is_readable (datoteka niza)

Najvjerovatnije će PHP raditi pod korisničkim ID-om koji koristi web server (obično "niko"), tako da da bi funkcija is_readable() vratila TRUE, fajl mora biti dozvoljen da ga svi čitaju. 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($filename, "r");

print "$filename nije čitljivo!";

Funkcija fread() čita određeni broj bajtova iz datoteke koju je odredio manipulator datoteka. sintaksa funkcije fwrite():

int fread (int manipulator, int dužina)

Manipulator se mora odnositi na otvorenu datoteku koja je čitljiva (pogledajte opis funkcije is_readable()). Čitanje se zaustavlja nakon što se pročita određeni broj bajtova ili kada se dostigne kraj datoteke. Razmotrite tekstualnu datoteku pastry.txt prikazanu u Listingu 7.1. Čitanje i izlaz ove datoteke u pretraživaču se vrši pomoću sljedećeg fragmenta:

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

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

Koristeći funkciju fllesize() za određivanje veličine pastry.txt u bajtovima, osiguravate da funkcija fread() čita cijeli sadržaj datoteke.

Listing 7.1. Tekstualni fajl pastry.txt

Recept: Testo za pecivo

1 1/4 šolje višenamenskog brašna

3/4 štapića (6 kašika) neslanog putera, iseckanog

2 supene kašike krema za povrće 1/4 kašičice soli

3 kašike vode

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

string fgetc (int manipulator)

Manipulator mora referencirati otvorenu datoteku koja je čitljiva (pogledajte opis funkcije is_readable() ranije u ovom poglavlju). Sljedeći primjer pokazuje čitanje znak po znak i izlaz datoteke pomoću funkcije fgetc():

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

$char = fgetc($fh):

print $char; endwhile;

Funkcija fgets() vraća string pročitan sa trenutne pozicije pokazivača u datoteci koju je naveo rukovalac datoteke. Pokazivač datoteke mora pokazivati ​​na otvorenu datoteku koja je čitljiva (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 uslova:

  • čitanje iz datoteke dužina -- 1 bajt;
  • znak novog reda je pročitan iz datoteke (uključen u vraćeni niz);
  • Oznaka kraja datoteke (EOF) je pročitana iz datoteke.

Ako želite da organizujete čitanje datoteke red po red, unesite u drugi parametar vrednost koja je očigledno veća od broja bajtova u retku. Primjer čitanja red po red i izlaza datoteke:

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

while (!feof($fh));

$line = fgets($fh, 4096);

print $line. "
";

Funkcija fgetss() je potpuno slična fgets() sa jednim izuzetkom - pokušava ukloniti sve HTML i PHP oznake iz pročitanog teksta:

string fgetss (Int manipulator, int dužina [, string dozvoljene_oznake])

Prije nego što pređete na primjere, pregledajte sadržaj Listinga 7.2—ova datoteka se koristi u Listama 7.3 i 7.4.

Listing 7.2. File science.html

Najnovije vijesti - Nauka

Otkriven vanzemaljski oblik života


20. avgusta 2000

Rano jutros, u ormaru starog frižidera u stanu W. J. Gilmorea pronađena je čudna nova forma gljivice koja raste.Nije poznato da li je snažno zračenje koje izlazi iz monitora kompjutera stanara pomoglo u ovoj evoluciji.

Listing 7.3. Uklanjanje oznaka iz HTML datoteke prije prikazivanja u pretraživaču

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

dok (!feof($fh)) :

print fgetss($fh, 2048);

Rezultat je prikazan ispod. Kao što vidite, sve HTML oznake su uklonjene iz datoteke science.html, što dovodi do gubitka formatiranja:

U nekim situacijama, sve osim nekoliko oznaka se uklanjaju iz datoteke - 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)) :

print fgetss($fh. 2048, $allowable);

rezultat:

Najnovije vijesti - Nauka Vanzemaljska životna forma otkrivena 20. avgusta 2000. Rano jutros, u ormaru starog frižidera u stanu W. J. Gilmorea pronađena je čudna nova forma gljivice. Nije poznato da li je u tome pomoglo snažno zračenje koje dolazi iz monitora kompjutera stanara. evolucija.

Kao što vidite, funkcija fgetss() olakšava konverziju datoteka, posebno kada imate veliki broj slično formatiranih HTML datoteka.

Čitanje datoteke u niz

Funkcija file() učitava cijeli sadržaj datoteke u niz koji se može indeksirati. Svaki element niza odgovara jednom redu datoteke. Sintaksa funkcije File():

datoteka niza (datoteka niza [, int include_path])

Ako je opcioni treći parametar include_path 1, tada je putanja datoteke relativna u odnosu na direktorij uključivanja naveden u datoteci php.ini (pogledajte Poglavlje 1). Listing 7.5 koristi funkciju file() za učitavanje datoteke pastry.txt (pogledajte Listing 7.1).

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

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

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

Svaki red niza se ispisuje zajedno sa brojem:

Red 0: Recept: Testo za pecivo

Linija 1: 1 1/4 šolje višenamenskog brašna

Red 2: 3/4 štapića (6 kašika) neslanog putera, iseckanog

Linija 3: 2 supene kašike biljnog skraćenja

Linija 4: 1/4 kašičice soli

Red 5: 3 supene kašike vode

Preusmjeravanje datoteke na standardni izlaz

Funkcija readfile() čita sadržaj datoteke i zapisuje ga u standardni izlaz (u većini slučajeva, u pretraživač). sintaksa funkcije readfile():

int readfile (datoteka niza [, int include_path])

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

Recimo da imate fajl latorre.txt čiji sadržaj želite da prikažete u pretraživaču:

Restoran "La Torre". smješten u Nettunu, Italija, nudi eklektičan spoj stila. istorija i fina morska kuhinja. Unutar zidina srednjovjekovnog borga koji okružuje grad, možete večerati dok gledate kako prolaznici kupuju u seoskim buticima. Udobnost u kombinaciji sa samo najsvježijim morskim specijalitetima čini La Torre jednim od najboljih italijanskih restorana.

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

$restaurant_file = "latorre.txt";

// Pošalji cijeli fajl na standardni izlaz

readfile($restaurant_file);

Otvaranje obrađivača procesnih datoteka

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

int popen (naredba niza, string mod)

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

// Otvorite datoteku "spices.txt" za pisanje

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

// Dodajte nekoliko redaka teksta

fputs($fh, "Peršun, žalfija, ruzmarin\n");

fputs($fh, "Paprika, so, biber\n");

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

// Zatvorite manipulator

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

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

// Ispis rezultata grep

Rezultat izgleda ovako:

Bosiljak, žalfija, đumbir

Funkcija fpassthru() slična je funkciji passthru() o kojoj se govori u odeljku “Pokretanje vanjskih programa” ovog poglavlja.

Nakon završetka svih operacija, datoteka ili proces moraju biti zatvoreni. Funkcija pclose() zatvara vezu s procesom koji je specificirao manipulator, slično načinu na koji funkcija fclose() zatvara datoteku otvorenu funkcijom fopen(). sintaksa funkcije pclose():

int pclose (int manipulator)

U parametru manipulator manipulator primljen ranije uz uspješan poziv popen() se prenosi.

Otvaranje utičnice

PHP nije ograničen na interakciju sa datotekama i procesima – takođe možete uspostaviti veze preko utičnica. Socket Socket je softverska apstrakcija koja vam omogućava da komunicirate sa različitim servisima na drugom računaru.

Funkcija fsockopen() uspostavlja utičnicu vezu sa serverom na Internetu

preko TCP ili UDP protokola. sintaksa funkcije fsockopen():

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

Opcijski parametri error_code i error_text sadrže informacije koje će biti prikazane ako veza sa serverom ne uspije. Oba parametra moraju biti proslijeđena referencom. Treći opcioni parametar, timeout, određuje dužinu vremena čekanja na odgovor od servera (u sekundama). Listing 7.6 pokazuje korištenje funkcije fsockopen() za dobivanje informacija o serveru. Međutim, prije nego pogledate Listing 7.6, postoji još jedna funkcija s kojom se morate upoznati: socket_set_blocking().

UDP (User Datagram Protocol) je komunikacijski protokol bez povezivanja.

socket_set_blocking()

Funkcija socket_set_b1ocki ng() vam omogućava da postavite kontrolu vremenskog ograničenja za operacije servera:

socket_set_blocking(int manipulator, boolean način rada)

Parametar manipulatora specificira prethodno otvorenu utičnicu, a parametar moda bira način na koji se utičnica prebacuje (TRUE za blokirajući način, 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šćenje fsockopen() za dobijanje informacija o serveru

funkcija getthehost($host.$path) (

// Otvaranje veze sa čvorom

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

// Idi na način blokiranja

socket_set_blocking($fp, 1),

// Pošalji zaglavlja

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

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

// Dobiti zaglavlja

while($x< 10) :

$headers = fgets($fp, 4096);

// Zatvorite manipulator

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

Pokretanje Listinga 7.6 proizvodi sljedeći izlaz:

HTTP/1.1 200 OK Server: 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 zatvoriti kada završi skripta u kojoj je funkcija pozvana. Sintaksa funkcije pfsockopen() je:

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

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

Pokretanje eksternih programa

PHP skripte takođe mogu da izvršavaju programe koji se nalaze na serveru. Ova funkcija se posebno često koristi kada se sistem administrira putem web pretraživača, kao i za jednostavnije dobijanje sažetih informacija o sistemu.

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

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

Imajte na umu da funkcija exec() samo izvršava naredbu i ne ispisuje njene rezultate. Sav izlaz naredbe može se pohraniti u opcijski parametar niza. Dodatno, ako je povratna varijabla također specificirana kada je naveden parametar niza, potonjem se dodjeljuje povratni kod izvršene naredbe.

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

Listing 7.7. Provjera veze sa serverom pomoću funkcije exec().

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

// Na Windows-u - exec("ping -n 5 www.php.net. $ping);

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

print "
$ping[$i]";

rezultat:

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

64 bajta od 208.247.106.187: icmp_seq=0 ttl=243 time=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 time=70.779 ms

64 bajta od 208.247.106.187: icmp_seq=3 ttl=243 time=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/avg/max/stddev - 55.339/63.662/70.779/6.783 ms

Zadnji apostrofi

Postoji još jedan način izvršavanja sistemskih naredbi koji ne zahtijeva pozivanje funkcija - naredba koja se izvršava je zatvorena u pozadinske oznake (` `), a rezultati njenog rada se prikazuju u pretraživaču. primjer:

print "

$output
";

Ovaj isječak prikazuje sadržaj direktorija u kojem se skripta nalazi u pretraživaču.

Interni parametar ping -c 5 (-p 5 na Windows-u) specificira broj anketa servera.

Ako samo želite da vratite neformatirane rezultate naredbe, koristite funkciju passthru() opisanu u nastavku.

Passthru() funkcija radi skoro isto kao exec(), s jednim izuzetkom - automatski ispisuje rezultate naredbe. Sintaksa funkcije Passthru():

void passthru (naredba niza [, int return])

Ako se opcioni parametar vraćanja prosljeđuje prilikom poziva passthru(), ova varijabla se postavlja na povratni kod izvršene naredbe.

escapeshellcmd()

Funkcija escapeshellcmd() izbjegava sve potencijalno opasne znakove koje bi korisnik mogao unijeti (na primjer, u HTML obrazac) da bi izvršio naredbe exec(), passthru(), system() ili popen(). sintaksa:

string escapeshellcmd (string komanda)

Korisnički unos uvijek treba tretirati s određenim oprezom, ali čak i tako, korisnici mogu unijeti komande koje će izvršiti funkcije sistemskih komandi. 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 preduzmu nikakve mjere opreza, takva komanda će dovesti do katastrofe. Međutim, možete koristiti funkcije escapeshellcmd() da izbjegnete korisnički unos:

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

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

Funkcija escapeshellcmd() izbjegava znak *, sprječavajući naredbu da ima katastrofalne posljedice.

Sigurnost je jedan od najvažnijih aspekata Web programiranja, pa sam cijelo poglavlje posvetio ovoj temi i tome kako je ona povezana sa PHP programiranjem. Pogledajte Poglavlje 16 za više informacija.

Rad sa datotečnim sistemom

PHP ima funkcije za pregled i izvođenje različitih operacija nad datotekama na serveru. Informacije o atributima serverske datoteke (lokacija, vlasnik i privilegije) su često korisne.

Funkcija basename() izdvaja ime datoteke iz proslijeđenog punog imena. Sintaksa funkcije Basename():

osnovno ime niza (puno ime niza)

Ekstrahiranje imena osnovne datoteke iz punog naziva se radi na sljedeći način:

$path = "/usr/local/phppower/htdocs/index.php"; $file = bazno ime($putanja); // $file = "index.php"

Zapravo, ova funkcija uklanja putanju iz punog imena i ostavlja samo ime datoteke.

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

int getlastmod(void)

Povratna vrijednost slijedi UNIX format datuma/vremena i možete koristiti funkciju date() da biste je formatirali. Sljedeći isječak prikazuje datum posljednje izmjene stranice:

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

Funkcija stat() vraća niz koji se može indeksirati s detaljnim informacijama o datoteci s datim imenom:

niz stat (string ime datoteke)

Sljedeće informacije se vraćaju u elementima niza:

0 Uređaj

2 Način zaštite indeksnog čvora

3 Broj linkova

4 ID korisnika

5 ID grupe vlasnika

6 Tip uređaja indeksnog čvora

7 Veličina u bajtovima

8 Vrijeme posljednjeg poziva

9 Vrijeme posljednje izmjene

10 Vrijeme posljednje izmjene

11 Veličina bloka za I/O sistem datoteka

12 Broj dodijeljenih blokova

Stoga, ako želite znati kada je posljednji put pristupilo datoteci, pogledajte element 8 vraćenog niza. Pogledajmo primjer:

$file - "datoteka podataka.txt";

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

$bsize) = stat($file);

print "$file je $size bajtova.
";

print "Vrijeme posljednjeg pristupa: $atime
";

print "Vrijeme posljednje izmjene: $mtime
";

rezultat:

popen.php ima 289 bajtova.

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

Vrijeme posljednje izmjene: 15. avgust 2000. 10:07:18

U ovom primjeru, koristio sam konstrukciju liste() za dodjelu imena svakoj povratnoj vrijednosti. Naravno, jednako lako možete vratiti niz, proći kroz elemente i prikazati sve potrebne informacije. Kao što vidite, funkcija stat() vam omogućava da dobijete razne korisne informacije o datoteci.

Prikaz i promjena karakteristika datoteke

Svaki fajl na sistemima porodice UNIX ima tri važne karakteristike:

  • pripadnost grupi;
  • vlasnik;
  • dozvole.

Sve ove karakteristike mogu se mijenjati korištenjem odgovarajućih PHP funkcija. Funkcije opisane u ovom odeljku ne rade na sistemima iz porodice Windows.

Ako nemate iskustva sa UNIX operativnim sistemima, informacije o karakteristikama UNIX sistema datoteka možete pronaći na http://sunsite.auc.dk/linux-newbie/FAQ2.htm. Teme članstva u grupi, vlasništva i dozvola razmatrane su u Odjeljku 3.2.6.

Funkcija chgrp() pokušava promijeniti grupu kojoj pripada dati fajl. sintaksa funkcije chgrp():

int chgrp (naziv datoteke, mješovita grupa)

Funkcija filegroup() vraća ID grupe vlasnika datoteke sa datim imenom ili FALSE u slučaju greške. Sintaksa funkcije Filegroup():

int filegroup (string ime datoteke)

Funkcija chmod() mijenja dozvole datoteke s datim imenom. sintaksa funkcije chmod():

int chmod (string ime datoteke, int dozvole)

Dozvole su navedene u oktalnoj notaciji. Specifičnosti postavljanja parametra funkciji chmod() prikazane su u sljedećem primjeru:

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

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

chmod("data_file.txt", 0766); // Works

Fileperms() funkcija vraća dozvole datoteke sa datim imenom, ili FALSE u slučaju greške. Sintaksa funkcije Fileperms():

int fileperms (string ime datoteke)

Funkcija chown() pokušava promijeniti vlasnika datoteke. Pravo promjene vlasnika datoteke ograničeno je na privilegovanog korisnika. sintaksa funkcije chown():

int chown (naziv datoteke, mješoviti korisnik)

Funkcija fileowner() vraća ID korisnika za vlasnika datoteke sa datim imenom. Sintaksa funkcije Fileowner():

int vlasnik datoteke (string ime datoteke)

Kopiranje i preimenovanje fajlova

Druge korisne sistemske funkcije koje se mogu izvesti u PHP skriptama uključuju kopiranje i preimenovanje datoteka na serveru. Ove operacije izvode dvije funkcije: copy() i rename().

Kopiranje datoteke u PHP skriptu nije ništa teže od upotrebe UNIX cf komande. Problem je riješen PHP funkcijom copy(). Sintaksa funkcije soru() je:

int kopija (izvor niza, odredište niza)

Funkcija copy() pokušava kopirati izvornu datoteku u odredišnu datoteku; vraća TRUE u slučaju uspjeha, FALSE u slučaju neuspjeha. Ako odredišna 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");

Rename() funkcija preimenuje datoteku. Ako je uspješno, vraća se TRUE, a ako nije uspješno, vraća se FALSE. Preimenuj() sintaksu funkcije:

bool preimenuj (string old_name, string new_name)

Primjer preimenovanja datoteke pomoću funkcije rename():

$data_file = "data.txt";

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

Brisanje fajlova

Funkcija unlink() briše datoteku sa datim imenom. sintaksa:

int unlink (string fajl)

Ako radite sa PHP-om na Windows sistemu, ponekad možete imati problema sa korišćenjem ove funkcije. U ovom slučaju, možete koristiti gore opisanu funkciju system() i izbrisati datoteku naredbom DOS del:

system("del ime datoteke.txt");

Rad sa katalozima

PHP funkcije vam omogućavaju da vidite i navigirate sadržajem direktorija. Listing 7.8 prikazuje tipičnu strukturu direktorija na UNIX sistemu.

Listing 7.8. Tipična struktura direktorija

Funkcija dirname() dopunjuje basename() - izvlači putanju iz potpuno kvalificiranog imena datoteke. Sintaksa funkcije dirname() je:

string dirname (puta niza)

Primjer korištenja dirname() za izdvajanje putanje iz punog imena:

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

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

Funkcija dirname() se ponekad koristi u sprezi sa varijablom $SCRIPT_FILENAME da bi se dobila puna putanja do skripte iz koje se naredba izvršava:

$dir - dirname($SCRIPT_FILENAME);

Is_dir() funkcija provjerava da li je datoteka s datim imenom direktorij:

bool is_dir (string ime datoteke)

Sljedeći primjer koristi strukturu direktorija iz Listinga 7.8:

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

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

Funkcija mkdir() radi istu stvar kao UNIX naredba istog imena - kreira novi direktorij. sintaksa funkcije mkdir():

int mkdir (puta niza, int mod)

Parametar putanje specificira putanju za kreiranje novog direktorija. Ne zaboravite završiti parametar imenom novog direktorija! Parametar načina određuje dozvole dodijeljene kreiranom direktoriju.

Baš kao što funkcija fopen() otvara manipulator za rad sa datom datotekom, opendir() funkcija otvara manipulator za rad sa direktorijumom. Sintaksa funkcije opendir() je:

int opendir (putanja niza)

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

void closeir(int directory_manipulator)

Funkcija readdir() vraća sljedeći element navedenog direktorija. sintaksa:

string readdir(int directory_manipulator)

Koristeći ovu funkciju, možete lako navesti sve datoteke i poddirektorije koji se nalaze u trenutnom direktoriju:

$dh = opendir(" .);

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

print "$file
"; endwhile;

Funkcija chdir() radi isto kao naredba UNIX cd; mijenja se u direktorij specificiran parametrom. sintaksa funkcije chdir():

int chdir (direktorij nizova)

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

$newdir = "knjiga";

chdir($newdir) ili die("Nije moguće promijeniti u direktorij ($newdir)"); $dh = opendir(" . ");

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

print "$file
";

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

void rewinddir (int directory_manipulator)

Projekat 1: Jednostavan brojač pogodaka

Skripta predstavljena u ovom odjeljku broji broj posjeta stranici na kojoj se nalazi. Prije nego pređete na kod u Listingu 7.9, pregledajte algoritam napisan u pseudokodu:

  1. Dodijelite varijabli $access ime datoteke u kojoj će biti pohranjena vrijednost brojača.
  2. Koristite funkciju file() da pročitate sadržaj $access u nizu $visits. Prefiks @ ispred imena funkcije potiskuje moguće greške (na primjer, ne postoji datoteka s datim imenom).
  3. Postavite varijablu $current_visitors na vrijednost prvog (i jedinog) elementa niza $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 koji upućuje na datoteku $access.

Listing 7.9. Jednostavan brojač pogodaka

// Skripta: jednostavan brojač pogodaka

// Svrha: čuvanje broja pogodaka u datoteci

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

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

+$current_visitors; // Povećaj brojač pogodaka

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

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

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

// na fajl "hits.txt"

fclose($fh); // Zatvorite manipulator fajlova "hits.txt"

Projekat 2: izrada mape lokacije

Skripta u Listingu 7.10 gradi mapu sajta, hijerarhijski prikaz svih fascikli i datoteka na serveru, počevši od datog direktorijuma. Izračunavanje dopuna elemenata koji čine mapu sajta koristi funkcije definisane u ovom i prethodnim poglavljima. Prije nego pređete na program, pregledajte algoritam napisan u pseudokodu:

  1. Deklarirajte servisne varijable za pohranjivanje roditeljskog direktorija, naziv grafičke datoteke sa slikom mape, naziv stranice i OS zastavicu servera (Windows ili drugi sistem).
  2. Deklarirajte funkciju display_directory() koja čita sadržaj direktorija i formatira ga za prikaz u pretraživaču.
  3. Konstruirajte putanju direktorija kombinirajući ime proslijeđeno u varijablu $dir1 sa $dir.
  4. Otvorite direktorij i pročitajte njegov sadržaj. Formatirajte nazive direktorija i datoteka i prikažite ih u pretraživaču.
  5. Ako je trenutna datoteka direktorij, pozovite display_di rectory() rekurzivno i proslijedite mu ime novog direktorija za prikaz. Izračunajte uvlačenje korišteno pri formatiranju izlaza.

Ako datoteka nije direktorij, ona je formatirana da se prikaže kao hiperveza (i izračunava se uvlačenje korišteno u formatiranju).

Listing 7.10. Sitemap.php program

// Datoteka: sitemap.php

// Svrha: izrada mape stranice

// Imenik iz kojeg počinje izgradnja karte

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

// Fajl sa grafičkom slikom foldera.

// Putanja mora biti relativna* prema korijenskom direktoriju Apache servera

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

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

// Na kom sistemu će se 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 direktorija i hijerarhije datoteka.

// Funkcija se može pozvati rekurzivno.

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

// Putanja ažuriranja

Sdh = opendir($dir);

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

// Elementi direktorija "." i ".." nisu prikazani.

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

ako ($using_linux == 0) :

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

$depth = explode("/", $dir); endif ; $curtent_depth = sizeof($dubina);

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

$tab_depth = $current_deptn - $init_depth;

$file = $dir. "\\", $file; ostalo:

$file = $dir. "/",$file; endif;

// Da li $file sadrži direktorij? if (je dir($file)) :

// Izračunaj uvlačenje

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

$x++; endwhile;

print "

".basename($file)."
";

// Brojač povećanja

// Rekurzivni poziv display_directory()

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

// Nije direktorij

// Graditi putanju prema pravilima korištenog

// operativni sistem.

ako ($using_linux == 0) :

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

// Izračunaj uvlačenje

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

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

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

endif; // Is_dir(file) endif: // Ako ! "." ili ".."

// Zatvaranje direktorija 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($depth);

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

Na sl. Slika 7.1 prikazuje rezultat pokretanja skripte za direktorij sa nekoliko poglavlja ove knjige.

Rice. 7.1. Prikaz strukture direktorija na serveru pomoću skripte sitemap.php

Rezultati

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

  • provjera postojanja datoteka;
  • otvaranje i zatvaranje datoteka i I/O tokova;
  • pisanje i čitanje iz datoteke;
  • preusmjeravanje datoteke na izlazni tok;
  • pokretanje eksternih programa;
  • operacije sistema datoteka.

Materijal u ovom poglavlju postavlja scenu za sljedeće poglavlje, “Stringovi i regularni izrazi”, jer su prilikom razvoja web aplikacija, obrada stringova i I/O operacije vrlo blisko povezane.

Posljednje ažuriranje: 1.11.2015

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

Čitanje i pisanje datoteka

Otvaranje i zatvaranje fajlova

Za otvaranje datoteka u PHP-u definirana je funkcija fopen(). Ima sljedeću definiciju: resurs fopen(string $filename, string $mode) . Prvi parametar $filename predstavlja putanju do datoteke, a drugi je 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" : Fajl je otvoren za pisanje. Ako takva datoteka već postoji, onda se ona prepisuje, ako ne, onda se kreira.

    "w+" : Fajl je otvoren za pisanje i čitljiv. Ako takva datoteka već postoji, onda se ona prepisuje, ako ne, onda se kreira.

    "a" : Fajl je otvoren za pisanje. Ako takva datoteka već postoji, tada se podaci upisuju na kraj datoteke, a stari podaci ostaju. Ako datoteka ne postoji, kreira se

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

Izlaz funkcije fopen bit će deskriptor datoteke. Ova ručica se koristi za operacije s datotekama i za zatvaranje datoteke.

Nakon završetka rada, 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("nije moguće otvoriti datoteku"); fclose($fd);

Konstrukcija or die("tekst greške") dozvoljava skripti da prestane da se izvodi i prikaže neku poruku o grešci ako funkcija fopen nije mogla da otvori datoteku.

Čitanje fajla

Za čitanje datoteke možete koristiti nekoliko funkcija. Za čitanje red po red koristi se funkcija fgets(), koja prima deskriptor datoteke i vraća jedan pročitan red. Prođimo kroz cijeli fajl red po red:

Svaki put kada se pozove fgets(), PHP će postaviti pokazivač na kraj pročitanog reda. Za praćenje kraja datoteke koristi se funkcija feof(), koja vraća true kada se 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 izvršiti čitanje blok po blok, odnosno čitanje određenog broja bajtova iz datoteke pomoću funkcije fread():

Funkcija fread() uzima dva parametra: rukohvat datoteke za čitanje i broj bajtova za čitanje. Kada se blok pročita, pokazivač u datoteci se pomiče na kraj tog bloka. Takođe pomoću funkcije feof() možete pratiti završetak datoteke.

Napišite datoteku

Da biste napisali datoteku, koristite funkciju fwrite() koja zapisuje sljedeći red u datoteku:

Druga funkcija fputs() radi slično:

Rad sa pokazivačem datoteke

Prilikom otvaranja datoteke za čitanje ili pisanje u "w" modu, pokazivač u datoteci se postavlja na početak. Prilikom čitanja podataka, PHP pomera pokazivač u datoteci na kraj čitanog bloka podataka. Međutim, možemo i ručno manipulirati pokazivačem u datoteci i postaviti ga na proizvoljnu lokaciju. Da biste to učinili, trebate 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 opcijski parametar specificira kako se postavlja pomak. Može imati tri vrijednosti:

    SEEK_SET : zadana vrijednost, postavlja pomak u offset bajtovima u odnosu na početak datoteke

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

    SEEK_END : postavlja pomak na pomak bajtova od kraja datoteke

Ako je pokazivač uspješno instaliran, funkcija fseek() vraća 0, a ako je pokazivač neuspješan, vraća -1.

Primjer korištenja funkcije:

$fd = fopen("hello.txt", "w+") ili die("nije moguće otvoriti datoteku"); $str = "Zdravo svijete!"; // red za pisanje fwrite($fd, $str); // upisujemo red na početak fseek($fd, 0); // postavite pokazivač datoteke na početak fwrite($fd, "Oink"); // upisujemo red na početku fseek($fd, 0, SEEK_END); // postavite pokazivač na kraj fwrite($fd, $str); // napiše još jedan red na kraju fclose($fd);

preuzimanja $_ (8)

Moram da učitam PHP fajl u varijablu. Na primjer include();

Učitao sam jednostavnu HTML datoteku ovako:

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

Ali sada moram da učitam PHP fajl.

Odgovori

Ako vaš fajl ima povratnu izjavu:

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

Ovu varijablu možete dobiti ovako:

$data = uključuje $filePath;

Alternativno, možete započeti baferovanje izlaza, uključiti/zahtevati, a zatim zaustaviti baferovanje. Sa ob_get_contents() možete jednostavno prebaciti stvari koje je izbacila druga PHP datoteka u varijablu.

Ako želite da preuzmete datoteku bez pokretanja preko web servera, sljedeće bi trebalo raditi.

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

Sadržaj datoteke će tada biti preuzet. PHP fajl mora biti u potpunosti formiran sa oznakamaDa bi eval to procijenio.

Pretpostavljam da želiš da dobiješ PHP generisani sadržaj, ako je istina:

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

Inače, ako želite da dobijete Izvorni kod PHP datoteke, ovo je isto kao i .txt fajl:

$Vdata = file_get_contents("put/do/VAŠ/FILE.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 predložio eyel, moći ćete čitati samo izlaz PHP skripte. PHP skriptu možete čitati samo ako je na istom serveru kao i vaša skripta. Onda možete koristiti nešto slično

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

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

  1. Pretvaranje podataka u JSON
  2. Zovi AJAX da primite fajl JSON
  3. Konverzija JSON prigovoriti Javascript

KORAK 1

connect_error) ( die("Konekcija nije uspjela: " . $conn->connect_error); ) $sql = "IZABERI ID, ime, sliku SA telefona"; $result = $conn->query($sql); while($row =$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

String file_get_contents (string $filename [, bool $use_include_path = netačno [, resurs $context [, int $offset = -1 [, int $maxlen ]]]])

Ova funkcija je slična funkciji fajl() sa jedinom razlikom u tome 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 FALSE.

Korištenje funkcije file_get_contents() Najpoželjnije je ako trebate dobiti cijeli sadržaj datoteke, budući da funkcija koristi tehniku ​​mapiranja datoteke u memoriju za poboljšanje performansi, ako to podržava vaš operativni sistem.

Komentar:

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

Lista parametara

Ime 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 putanji.

kontekstu

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

Pomak na kojem će početi čitanje originalnog toka.

Offset pretraga nije podržana kada radite sa udaljenim datotekama. Pokušaj pronalaženja pomaka na ne-lokalnim datotekama može funkcionirati za male pomake, ali rezultat je nepredvidiv jer se izvodi na baferiranom toku.

Maksimalna veličina pročitanih podataka. Podrazumevano, čitanje se obavlja sve dok se ne dostigne kraj datoteke. Imajte na umu da se ova postavka primjenjuje i na tokove sa filterima.

Povratne vrijednosti

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

Pažnja

Ova funkcija se može vratiti kao boolean FALSE, i ne-boolean vrijednost na koju se prebacuje FALSE. Za više informacija pogledajte odjeljak Boolean tip. Koristite === operator da provjerite vrijednost koju vraća ova funkcija.

Greške

Generirat će se greška nivoa E_UPOZORENJE, ako se parametar naziva datoteke ne može pronaći, parametar maxlength je manji od nule ili pretraživanje pomaka 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 $homepage ;
?>

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

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

Rezultat pokretanja ovog primjera bit će otprilike ovako:

string(14) "lle Bjori Ro"

Primjer #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: Fatalna greška protokola" u trenutku kada dođete do kraja podataka. Da biste ovo zaobišli, trebali biste postaviti error_reporting na nivo koji isključuje E_WARNING. PHP verzije 4.3.7 i starije mogu otkriti da postoji problematičan IIS na strani servera prilikom otvaranja streama pomoću omotača https:// i ne prikazuje upozorenje. Ako koristite fsockopen() za stvaranje ssl:// socket, vaša je odgovornost da otkrijete i potisnete ovo upozorenje.

Najbolji članci na ovu temu