Php-lesefil fra slutten. PHP: Les en PHP-fil. Arbeide med filer i PHP: lesing, skriving og anbefalinger. Opprette og slette filer

PHP

file_exists("test.txt")//Eksisterer filen? filesize("test.txt");//Finn ut filstørrelsen //Tidsstempelet returneres: fileatime("test.txt");//Dato for siste tilgang til filen //date("d M Y" , $atime); filemtime("test.txt");//Dato for filendring //date("d M Y", $mtime); filectime("test.txt");//Dato for filoppretting (Windows) //date("d M Y", $ctime);

Filer: driftsmoduser

PHP

ressurs fopen (streng filnavn, strengmodus) // ressurs - returnerer en peker til filen i tilfelle suksess, eller FALSE i tilfelle feil
Driftsmodus Beskrivelse
r åpen fil skrivebeskyttet;
r+ åpne filen for lesing og skriving;
w åpne filen kun for skriving. Hvis den eksisterer, blir det gjeldende innholdet i filen ødelagt. Gjeldende posisjon er satt til begynnelsen;
w+ åpne filen for lesing og skriving. Hvis den eksisterer, blir det gjeldende innholdet i filen ødelagt. Gjeldende posisjon er satt til begynnelsen;
EN åpne filen for skriving. Gjeldende posisjon er satt til slutten av filen;
a+ åpne filen for lesing og skriving. Gjeldende posisjon er satt til slutten av filen;
b behandle den binære filen. Dette flagget kreves når du arbeider med binære filer på Windows.

Åpne og lukke filer i PHP

PHP

$fi = fopen("test.html", "w+") eller die("Feil"); //Eksempler $fi = fopen("http://www.you/test.html","r"); $fi = fopen("http://ftp.you/test.html", "r"); //Lukk fclose($fi)

Leser filer i PHP

PHP

//Les filen fread(int fi, int lengde) $str = fread($fi, 5); // Les de første 5 tegnene echo $str; // siden markøren har flyttet $str = fread($fi, 12); // Les de neste 12 tegnene echo $str; fgets(int fi[, int lengde]) // Les en linje fra en fil fgetss(int fi, int lengde [, streng tillatt]) // Les en linje fra en fil og forkast HTML-koder // streng tillatt - tagger som må stå igjen fgetc(int fi) //Leser et tegn fra en fil

Til å begynne med vil skrivingen skje i begynnelsen av filen, ved å overskrive eksisterende data, hvis noen. Derfor, hvis du trenger å skrive noe til slutten av filen, må du angi riktig lesemodus, for eksempel a+ .

Markørmanipulasjon i PHP-filer

PHP

int fseek(int fi, int offset [, int wherece]) //Setter markøren // int fi - peker til filen //offset - antall tegn som skal flyttes. //hvor: //SEEK_SET - bevegelse starter fra begynnelsen av filen; //SEEK_CUR - bevegelse starter fra gjeldende posisjon; //SEEK_END - bevegelse starter fra slutten av filen. fseek($fi, -10, SEEK_END); //Les de siste 10 tegnene $s = fread($fi, 10); $pos = ftell($fi); //Finn ut gjeldende posisjon spole tilbake($f)//reset markøren bool feof($f) //slutt av filen

Direkte arbeid med filer (data) i PHP

PHP

array file(string filename) // Få innholdet i filen i form av en array // Et annet alternativ for direkte arbeid med data file_get_contents(string filename) // Lese (få hele filen på én linje) // Skrive til filen (opprinnelig overskrevet) file_put_contents (streng filnavn, blandede data[,int flagg]); //FILE_APPEND // Skriv til slutten av filen: file_put_contents("test.txt", "data", FILE_APPEND); //Hvis du skriver en array, $array = array("I", "live"); file_put_contents("test.txt",$array); //da får vi "Ilive"

Administrere filer i php

PHP

copy(strengkilde, strengdestinasjon); // Kopiering av filen rename(str oldname, str newname); // Gi nytt navn til filen unlink (streng filnavn); // Sletting av en fil

Laster opp filer til PHP-server

//PHP.ini-innstillinger file_uploads (på|av) // tillat eller forby filopplasting upload_tmp_dir // midlertidig mappe for opplastede filer. som standard midlertidig mappe upload_max_filesize (standard = 2 Mb) // maks. last opp filstørrelse post_max_size // total størrelse på det innsendte skjemaet (må være større enn upload_max_filesize) // Enkel opplasting

HTML

Arbeide med filer på serveren

PHP

//Godta data $tmp = $_FILES["brukerfil"]["tmp_name"]; $navn = $_FILES["brukerfil"]["navn"]; //Flytt filen move_uploaded_file($tmp, navn); move_uploaded_file($tmp, "upload/".navn); // omdirigere filen til opplastingsmappen // i forhold til gjeldende fil // Hva er i $_FILES-matrisen $_FILES["brukerfil"]["navn"] // filnavn, for eksempel test.html $_FILES[ "userfile"][" tmp_name"] // midlertidig filnavn (bane) $_FILES["brukerfil"]["size"] // filstørrelse $_FILES["brukerfil"]["type"] // filtype $ _FILES["brukerfil"] ["feil"] // 0 - ingen feil, nummer - ja-streng fgets(ressurshåndtak [, int lengde])

Returnerer en streng med lengde - 1 byte lest fra filbeskrivelsen pekt på av håndtaket. Lesingen avsluttes når antall leste byte når lengden - 1, når den når slutten av linjen (som er inkludert i returverdien), eller når den når slutten av filen (det som kommer først). Hvis lengden ikke er spesifisert, er standarden 1 kilobyte eller 1024 byte.

Hvis det oppstår en feil, returnerer funksjonen FALSK .

De vanligste feilene:

Programmerere som er vant til semantikken til "C"-funksjoner fgets(), må ta hensyn til forskjellen i hvordan end-of-file (EOF)-flagget returneres.

Filpekeren må være gyldig og peke til en fil som ble åpnet av funksjonene fopen() eller fsockopen() .

Nedenfor er et enkelt eksempel:


Eksempel 1. Lese en fil linje for linje

$handle = fopen("/tmp/inputfile.txt" , "r" );
mens (! feof ($handle )) (
$buffer = fgets($handle, 4096);
ekko $buffer ;
}
fclose($handle);
?>

Kommentar: Lengdeparameteren ble valgfri fra og med PHP versjon 4.2.0. Hvis denne parameteren utelates, antas lengden på strengen å være 1024. Fra og med PHP 4.3 vil utelatelse av lengdeparameteren føre til at strømmen leses til slutten av strengen. Hvis de fleste linjene i filen er lengre enn 8 kilobyte, er den mest effektive avgjørelsen angående ressursene som brukes av skriptet å spesifisere en maksimal linjelengde.

Kommentar: Denne funksjonen kan behandle binære data korrekt fra PHP 4.3. Tidligere versjoner hadde ikke denne funksjonaliteten.

Om bruk av funksjonene fopen, fclose, feof, fgets, fgetss og fscanf

La oss liste opp alle mulighetene

En av fordelene med å jobbe med moderne programmeringsspråk som PHP er antallet tilgjengelige funksjoner. PHP kan lett adoptere Perls motto, "Det er mer enn én måte å gjøre noe på," spesielt når det kommer til filbehandling. Men med mengden av tilgjengelige verktøy, blir spørsmålet hvilken som er best for å få jobben gjort. Selvfølgelig avhenger svaret på dette spørsmålet virkelig av hva målene dine er når du behandler filen, så å lære alle språkets evner er verdt tiden din.

Tradisjonelle fopen-metoder

Fopen-metodene er kanskje de mest kjente for tidligere tiders C- og C++-programmerere, ettersom de er mer eller mindre verktøyene som har vært tilgjengelig i mange år hvis du har jobbet med disse programmeringsspråkene. For noen av disse metodene følger du standardprosedyren, bruker fopen for å åpne filen, en funksjon for å lese dataene, og deretter flukk for å lukke filen, som vist i liste 1.

Liste 1. Åpne og lese en fil ved hjelp av fgets
$file_handle = fopen("minfil", "r"); while (!feof($file_handle)) ( $line = fgets($file_handle); echo $line; ) fclose($file_handle);

Selv om disse funksjonene er kjent for de fleste erfarne programmerere, la meg analysere hvordan de fungerer. I virkeligheten følger du disse trinnene:

  1. Åpne filen. $file_handle lagrer en lenke til selve filen.
  2. Sjekk om du har kommet til slutten av filen.
  3. Fortsett å lese filen til du kommer til slutten, og skriv ut hver linje du leser.
  4. Lukk filen.

Med det i tankene vil jeg se på hver filfunksjon som brukes her.

fopen funksjon

Fopen-funksjonen oppretter en tilkobling til en fil. Jeg sier "etablerer en tilkobling" fordi, i tillegg til å åpne en fil, kan fopen også åpne en URL:

$fh = fopen("http://127.0.0.1/", "r");

Denne programlinjen oppretter en lenke til siden ovenfor og lar deg begynne å lese den som en lokal fil.

Merk: Alternativet "r" som brukes i fopen indikerer at filen er åpen skrivebeskyttet. Siden skriving til en fil ikke er inkludert i omfanget av problemstillinger diskutert i denne artikkelen, vil jeg ikke liste opp alle mulige verdier for parameteren. Du må imidlertid endre "r" til "rb" hvis du leser fra binærfiler for kompatibilitet på tvers av plattformer. Nedenfor er et eksempel på denne typen.

feof funksjon

Feof-kommandoen bestemmer om lesingen har nådd slutten av filen og returnerer True eller False. Løkken vist i fortsetter til slutten av filen "minfil." Merk at feof også returnerer False hvis du leser en URL og tilkoblingen blir tidsavbrutt fordi det ikke er mer data å lese.

Funksjon flukk

La oss hoppe over midten av oppføring 1 og gå til slutten; fclose gjør det motsatte av fopen: den lukker forbindelsen til filen eller URL-en. Etter å ha utført denne funksjonen, vil du ikke lenger kunne lese fra filen eller kontakten.

fgets funksjon

Går du noen linjer tilbake i oppføring 1, kommer du til hjertet av filbehandlingsprosessen: faktisk lesing av filen. Fgets-funksjonen er ditt foretrukne våpen for det første eksemplet. Den henter en linje med data fra en fil og returnerer den som en streng. Derfra kan du vise dataene eller på annen måte behandle dem. Eksemplet i Oppføring 1 skriver ut hele filen.

Hvis du bestemmer deg for å begrense størrelsen på datadelen du jobber med, kan du legge til et fgets-argument for å begrense den maksimale lengden på datastrengen som fanges opp. Bruk for eksempel følgende kode for å begrense lengden på en linje til 80 tegn:

$string = fgets($file_handle, 81);

Tenk på "\0", end-of-line-indikatoren i C, og sett lengden til ett tegn lenger enn du faktisk trenger. Som du kan se, bruker eksemplet ovenfor 81, mens du trenger 80 tegn. Gjør det til en vane å legge til et ekstra tegn når du trenger å angi en linjelengdegrense for en gitt funksjon.

fread funksjon

Fgets-funksjonen er bare en av mange funksjoner som er tilgjengelige for å lese en fil. Dette er en av de mest brukte funksjonene, siden behandling av en fil linje for linje i de fleste tilfeller er mest fornuftig. Faktisk tilbyr flere andre funksjoner lignende funksjoner. Uansett, linje-for-linje-analyse er ikke alltid det du trenger.

Og her får vi tilgang til fread . Fread-funksjonen har et litt annet formål enn fgets: den er ment å lese fra binære filer (det vil si filer som i utgangspunktet ikke består av menneskelesbar tekst). Siden konseptet "linjer" ikke er relevant for binære filer (logiske datastrukturer er vanligvis ikke delt inn i linjer), må du spesifisere antall byte som skal leses.

$fh = fopen("minfil", "rb"); $data = fread($file_handle, 4096);

Eksemplet ovenfor leser 4096 byte (4 KB) med data. Merk at, uavhengig av verdien du angir, vil fread maksimalt lese 8192 byte (8 KB).

Forutsatt at filen ikke er større enn 8 KB, bør programutdraget nedenfor lese hele filen på én linje.

$fh = fopen("minfil", "rb"); $data = fread($fh, filstørrelse("minfil")); fclose($fh);

Hvis filstørrelsen er større, må du bruke en løkke for å lese resten av den.

fscanf funksjon

For å komme tilbake til strengbehandling, er fscanf også etterfølgeren til den tradisjonelle filbiblioteksfunksjonen i C. Hvis du ikke er kjent med den, leser fscanf datafelt til variabler fra en fil.

list ($felt1, $felt2, $felt3) = fscanf($fh, "%s %s %s");

Formatstrengene som brukes i denne funksjonen er beskrevet i mange kilder som PHP.net, så jeg vil ikke gjenta denne informasjonen her. Det er nok å si at strengformatering er veldig fleksibel. Det bør også nevnes at alle felt er plassert i variabelen som returneres av funksjonen. (I C vil disse bli sendt som argumenter.)

fgetss funksjon

Fgetss-funksjonen er forskjellig fra tradisjonelle filmanipuleringsfunksjoner og gir deg en bedre forståelse av PHPs muligheter. Det fungerer som fgets, men forkaster alle HTML- eller PHP-koder den oppdager, og etterlater bare den blotte teksten. La oss ta HTML-filen nedenfor.

Oppføring 2. Eksempel HTML-fil
Min tittel

Hvis du forstår hva "Cause there ain"t no one for to give you no pain" betyr, så hører du for mye på bandet America

La oss sende det gjennom fgetss-funksjonen.

Oppføring 3. Bruke fgetss
$file_handle = fopen("minfil", "r"); while (!feof($filhåndtak)) ( echo = fgetss($filhåndtak); ) fclose($filhåndtak);

Dette er hva du får som utdata:

Min tittel Hvis du forstår hva "Cause there ain"t no one for to give you no pain" betyr, så hører du for mye på bandet America

fpassthru-funksjon

Uansett hvordan du leser data fra en fil, kan du skrive ut de gjenværende dataene ved å bruke standard utgangskanal ved å bruke fpassthru-funksjonen.

fpassthru($fh);

Denne funksjonen skriver ut dataene slik at du ikke trenger å legge dem inn i en variabel.

Ikke-lineær filbehandling: flytte gjennom en fil

Selvfølgelig lar funksjonene beskrevet ovenfor deg bare lese fra en fil sekvensielt. Mer komplekse filer kan kreve flytting til forskjellige deler av filen på begynnelsen eller slutten av filen. For å gjøre dette trenger du fseek-funksjonen.

fseek($fh, 0);

Eksemplet ovenfor går tilbake til begynnelsen av filen. Hvis du ikke vil flytte helt til begynnelsen av filen - si, en kilobyte er nok - skriver du bare:

fseek($fh, 1024);

Fra og med PHP V4.0 er flere andre alternativer også tilgjengelige. For eksempel, hvis du trenger å gå 100 byte fremover fra din nåværende posisjon, kan du bruke følgende kode:

fseek($fh, 100, SEEK_CUR);

På samme måte gjøres flytting tilbake 100 byte ved å:

fseek($fh, -100, SEEK_CUR);

Hvis du vil gå tilbake til 100 byte-posisjonen før slutten av filen, bruk SEEK_END i stedet.

fseek($fh, -100, SEEK_END);

Når den nye posisjonen er nådd, kan du bruke fgets, fscanf eller en annen funksjon for å lese dataene.

Merk: du kan ikke bruke fseek på filbeskrivelser som refererer til en URL.

Ta en hel fil

Nå går vi videre til å se på noen av PHPs unike filbehandlingsmuligheter: behandling av store datablokker på én eller to linjer. Hvordan kan du for eksempel hente en fil og vise hele innholdet på nettsiden din? Vel, du har sett et eksempel på bruk av en loop med fgets. Men hvordan kan du gjøre det enklere? Prosessen er nesten latterlig enkel ved å bruke fgetcontents, som setter hele filen på en linje.

$my_file = file_get_contents("mittfilnavn"); echo $min_fil;

Selv om dette ikke er det beste alternativet, kan du skrive denne kommandoen enda kortere:

echo file_get_contents("mittfilnavn");

Denne artikkelen fokuserer først og fremst på behandling av lokale filer, men det er verdt å merke seg at du også kan fange opp, vise og analysere andre websider ved å bruke funksjonene som er beskrevet.

echo file_get_contents("http://127.0.0.1/");

Denne kommandoen er faktisk den samme som:

$fh = fopen("http://127.0.0.1/", "r"); fpassthru($fh);

Du ser kanskje på disse eksemplene og tenker: "Det er mye arbeid." PHP-utviklere er enige med deg. Så du kan forkorte kommandoen ovenfor til:

readfile("http://127.0.0.1/");

Lesefilfunksjonen sender ut hele innholdet i en fil eller webside til standard utdatabuffer. Som standard viser denne kommandoen en feilmelding når den mislykkes. For å unngå denne oppførselen (hvis du ønsker det), prøv kommandoen:

@readfile("http://127.0.0.1/");

Selvfølgelig, hvis du trenger å behandle innholdet i filer, er den enkle linjen returnert av file_get_contents sannsynligvis for mye. Du vil kanskje først dele den opp i deler ved å bruke split()-funksjonen.

$array = split("\n", file_get_contents("minfil"));

Men hvorfor trenger du all denne kompleksiteten hvis det er en perfekt egnet funksjon som vil gjøre jobben for deg? PHP file()-funksjonen utfører denne oppgaven i ett trinn: den returnerer en string-array hvis elementer er linjene i filen.

$array = fil("minfil");

Det skal bemerkes at det er en liten forskjell mellom de to eksemplene ovenfor. Split-kommandoen fjerner nye linjer, mens filkommandoen avslutter array-linjene med nye linjer (det samme gjør fgets).

PHPs evner går imidlertid langt utover de som er beskrevet ovenfor. Du kan analysere hele .ini-filer i PHP-stil med bare én parse_ini_file-kommando. Kommandoen parse_ini_file gjelder for filer som ligner på de som er vist i oppføring 4.

Oppføring 4. Eksempel .ini-fil
; Kommentarnavn = "Kong Arthur"-oppdrag = Å søke den hellige gral favorittfarge = Blå Samuel Clemens = Mark Twain Caryn Johnson = Whoopi Goldberg

Følgende kommandoer representerer en fil som en matrise og skriver deretter ut matrisen:

$file_array = parse_ini_file("holy_grail.ini"); print_r $filearray;

Resultatet vil være følgende utgang:

Oppføring 5. Utgang
Array ( => Kong Arthur => Å søke den hellige gral => Blå => Mark Twain => Whoopi Goldberg)

Selvfølgelig kan du legge merke til at denne kommandoen har slått sammen seksjonene. Dette er standardhandlingen, men du kan enkelt tilpasse den ved å bruke det andre argumentet til parse_ini_file: process_sections, som er en boolsk variabel. Sett process_sections til True.

$file_array = parse_ini_file("holy_grail.ini", true); print_r $filearray;

Og utdataene dine vil se slik ut:

Oppføring 6. Utgang
Array ( => Array ( => Kong Arthur => For å søke den hellige gral => Blå) => Array ( => Mark Twain => Whoopi Goldberg))

PHP legger dataene inn i en lett parserbar flerdimensjonal matrise.

Men dette er bare toppen av isfjellet når det kommer til filbehandling i PHP. Mer komplekse funksjoner som tidy_parse_file og xml_parse kan hjelpe deg med å analysere henholdsvis HTML- og XML-dokumenter. Se avsnittet for mer detaljert informasjon om hvordan disse funksjonene fungerer. Begge disse er verdt å vurdere hvis du skal jobbe med disse filtypene, men i stedet for å gå gjennom alle mulige filtyper, kan det være lurt å se nærmere på innholdet i denne artikkelen, som har noen gode generelle regler for arbeider med funksjonene jeg har beskrevet så langt.

God programmeringsstil

Anta aldri at alt i programmet vil fungere etter hensikten. For eksempel: hva om filen du leter etter har blitt flyttet? Hva om en tillatelsesendring fører til at du ikke kan lese innholdet i en fil? Du kan sjekke eksistensen av en fil og rettighetene til å lese den på forhånd ved å bruke metodene file_exists og is_readable.

Oppføring 7. Bruke file_exists og is_readable
$filnavn = "minfil"; if (fil_eksisterer($filnavn) && er_lesbar ($filnavn)) ( $fh = fopen($filnavn, "r"); # Behandler fclose($fh); )

Men i praksis vil dette programmet sannsynligvis være overkill for oppgaven din. Håndtering av verdiene som returneres av fopen er enklere og mer nøyaktig.

if ($fh = fopen($filnavn, "r")) ( # Behandler fclose($fh); )

Siden fopen returnerer False hvis den mislykkes, vil dette sikre at filen kun blir behandlet hvis filen kan åpnes. Selvfølgelig, hvis filen ikke eksisterer eller er uleselig, forventer du at returverdien er negativ. Derfor er en slik sjekk en felle som alle potensielle problemer faller i. Alternativt kan du avslutte programmet eller vise en feilmelding hvis filen ikke kan åpnes.

Som fopen returnerer file_get_contents, file og readfile-funksjonene False hvis filen ikke kan åpnes eller behandles. Funksjonene fgets, fgetss, fread, fscanf og fclose returnerer også False hvis det oppstår en feil. Selvfølgelig, med unntak av fclose , har du sannsynligvis allerede behandlet resultatene de returnerer. Når det gjelder fclose , er det ikke mye som kan gjøres hvis filhåndtaket ikke lukkes ordentlig, så å sjekke returverdien til fclose er generelt overkill.

Valget er ditt

PHP har ingen mangel på effektive måter å lese og analysere filer på. Klassiske funksjoner som fread kan tjene deg pålitelig mesteparten av tiden, eller du kan være mer tiltrukket av enkelheten til readfile hvis det er det du trenger for å få jobben gjort. Valget avhenger egentlig av hva du prøver å oppnå.

Hvis du behandler store datamengder, vil du sannsynligvis finne fscanf mer nyttig og effektivt enn for eksempel å bruke fil i kombinasjon med de påfølgende split- og sprintf-kommandoene. Hvis du bare viser en stor mengde tekst med mindre endringer, kan det være mer fornuftig å bruke filen , file_get_contents eller readfile-funksjonene. Denne løsningen vil sannsynligvis være riktig når du bruker PHP for caching eller til og med opprette en midlertidig proxy-server.

PHP gir mange verktøy for å jobbe med filer. Bli bedre kjent med hver enkelt og finn ut hvilke verktøy som er best for prosjektet du jobber med. Du tilbys et bredt utvalg av programvareverktøy, bruk dem mest effektivt og ha det gøy med å behandle filene dine ved hjelp av PHP.

I PHP må du ofte håndtere å lage en fil... det er veldig enkelt: det er ingen fil på disken, koden ble kjørt og filen dukket opp, så kan du lese denne filen inn i en annen variabel eller til og med hvilken som helst side på Internett og så skriv noe der... men for dette må du kunne spesialfunksjoner... mer om det i denne artikkelen...

For å lage en fil i PHP i et kjørbart skript, trenger du bare å spesifisere noen få funksjoner:

La oss ta en titt på et eksempel:

$text = "En slags tekst å skrive til filen";
$fp = fopen("fil.txt", "w");
fwrite($fp, $tekst);
fclose($fp);
?>

Her bør du vite:

fopen()- funksjonen åpner filen for lesing eller skriving og forklaringer;

Denne avklaringen (modusparameteren til fopen-funksjonen) er veldig viktig:

  • "r" - åpne en fil i php Kun for lesing. Markøren er plassert i begynnelsen.
  • "r+" - åpne en fil i php for lesing og skriving. Markøren er plassert i begynnelsen. !!! - med disse to modusene r og r+ må filene allerede være opprettet (ellers vil en feil vises Advarsel: fopen(file.txt): klarte ikke å åpne strømmen: Ingen slik fil eller katalog i ...), og vi bare leser eller vi har mulighet til å legge til.
  • "w" - filen åpnes KUN for skriving. Filen avkortes til null lengde - det vil si at den overskrives. Det som trengs skrives og markøren plasseres i begynnelsen.
  • "w+" - åpner en fil for skriving OG LESING! Resten er det samme som i "w"-modus. !!! - i disse to modusene - hvis filen ikke er opprettet - BLIR ET FORSØK Å LAGE DEN!
  • "en" - åpne filen KUN for skriving. I motsetning til "w", overskriver ikke dette alternativet innholdet i filen, men plasserer markøren på slutten av linjen og legger til innholdet som vi ønsket å legge til på slutten.
  • "a+" - åpne filen for skriving og lesing.

fskriv($fp, $text) - en funksjon for å skrive til en fil i PHP - det vil si at det som er i $text-variabelen skrives til en fil som er i $fp-variabelen;

flukk($fp) - funksjon for å lukke filen som vi skrev til $fp-variabelen;

Nå kan du enkelt lage filer i php riktig, åpne dem for lesing og redigering.

Nyttige PHP tillegg og funksjoner for å jobbe med en åpen fil:

while(!feof($fp))(
$mintekst = fgets($fp, 99);
echo $mytext."
";
}

her er betingelsen oppfylt - "til slutten av filen er nådd, gjør dette" while(!feof($fp))

1. Funksjon fgets($fp, 99) - lar deg dele alt innhold i seksjoner på 99 byte og mer, for å se dette tydeligere plasserer vi en tag

Denne strengfunksjonen fgets(ressurshåndtak [, int lengde]) aksepterer som standard 1024 byte (1 kilobyte) som lengdeparameter, hvis ikke spesifisert vil det være slik. Denne parameteren er valgfri fra og med PHP 4.2.0 (Returnerer FALSE i tilfelle feil)

Tilleggsfunksjoner for å åpne, skrive og lage en fil

Funksjon - int lesefil(streng filnavn [, bool use_include_path [, ressurskontekst]]) - les filen som en helhet.

Leser en fil og skriver innholdet til utdatabufferen. Og returnerer antall byte utdata. Ved feil kommer den tilbake hvis hunden ikke brukes - @readfile.

Noe sånt som dette vil skje:

På slutten av ordet er det en tag
.

b. Funksjon - array fil(streng filnavn [, int use_include_path [, ressurskontekst]]), gjør det samme som readfile-funksjonen, med ett unntak legger den til innholdet i filen til en matrise:

På denne måten kan du lese alle sider på Internett: $lines = file("http://site/"); og iterer gjennom matrisen ved å bruke foreach-funksjonen;

3a. strengfunksjon file_get_contents(streng filnavn [, bool use_include_path [, ressurskontekst [, int offset]]]] - lar deg få innholdet som en enkelt streng.

Dette er en mer universell PHP-funksjon for å lese en fil, lik filfunksjonen, bare innholdet returneres som en streng, ikke en matrise, og du kan angi betingelser - hvilken byte du skal starte med - offset og hvor skal man slutte - maxlen. Ved feil vil den returnere FALSE.

Viktig!!!- i dette tilfellet erstatter funksjonen 3 på en gang: fopen(), fread() og fclose() og blir dermed kvitt merket.

3b. int funksjon file_put_contents(streng filnavn, blandede data [, int flagg [, ressurs kontekst]]) - identisk med sekvensielle kall til funksjonene fopen(), fwrite() og fclose() - returnerer antall byte skrevet.

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

file_get_contents — Leser innholdet i en fil til en streng

Beskrivelse

String file_get_contents (streng $filnavn [, bool $use_include_path = false [, ressurs $kontekst [, int $offset = -1 [, int $maxlen ]]]])

Denne funksjonen ligner på funksjonen fil() med den eneste forskjellen er det file_get_contents() returnerer innholdet i filen i en streng, starter med spesifisert forskyvning og opp til maxlen byte. I tilfelle feil, file_get_contents() vil returnere FALSK.

Bruker funksjonen file_get_contents() Det er mest å foretrekke hvis du trenger å få hele innholdet i en fil, siden funksjonen bruker en fil-til-minne-tilordningsteknikk for å forbedre ytelsen, hvis den støttes av operativsystemet ditt.

Kommentar:

Hvis du åpner en URI som inneholder spesialtegn som mellomrom, må du kode URI ved å bruke urlencode().

Liste over parametere

Navnet på filen som leses.

Use_include_path

Kommentar:

Siden PHP 5 kan du bruke konstanten FILE_USE_INCLUDE_PATH for å søke etter en fil i inkludere banen.

kontekst

En gyldig kontekstressurs opprettet ved hjelp av funksjonen stream_context_create(). Hvis det ikke er nødvendig å bruke en spesiell kontekst, kan du hoppe over denne parameteren ved å sende verdien NULL.

Forskyvningen som lesing av den opprinnelige strømmen vil begynne med.

Offset-søk støttes ikke når du arbeider med eksterne filer. Å prøve å finne en forskyvning på ikke-lokale filer kan fungere for små forskyvninger, men resultatet er uforutsigbart siden det kjører på en bufret strøm.

Maksimal størrelse på data som er lest. Som standard utføres lesing til slutten av filen er nådd. Merk at denne innstillingen også gjelder for strømmer med filtre.

Returverdier

Funksjonen returnerer de leste dataene eller FALSK i tilfelle feil.

Merk følgende

Denne funksjonen kan returnere som boolsk FALSK, og en ikke-boolsk verdi som er castet til FALSK. For mer informasjon, se delen boolsk type. Bruk ===-operatoren for å kontrollere verdien returnert av denne funksjonen.

Feil

En nivåfeil vil bli generert E_ADVARSEL, hvis filnavnparameteren ikke kan bli funnet, er maxlength-parameteren mindre enn null, eller søket ved offset offset i strømmen mislykkes.

Eksempler

Eksempel #1 Hent og vis kildekoden til et nettsteds hjemmeside

$homepage = file_get_contents("http://www.example.com/");
echo $hjemmeside ;
?>

Eksempel #2 Finne filer i include_path

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

Eksempel #3 Lese en del av en fil

// Les 14 tegn, fra tegn 21
$section = file_get_contents("./people.txt" , NULL , NULL , 20 , 14 );
var_dump($seksjon);
?>

Resultatet av å kjøre dette eksemplet vil være noe sånt som dette:

string(14) "lle Bjori Ro"

Eksempel #4 Bruke strømmekontekster

// Lag en tråd
$opts = array(
"http" =>array(
"method" => "FÅ" ,
"header" => "Godta-språk: no\r\n" .
"Cookie: foo=bar\r\n"
);

$context = stream_context_create ($opts);

// Åpne filen ved å bruke HTTP-hodene som er angitt ovenfor
$fil = file_get_contents ("http://www.example.com/" , false , $context );
?>

Close_notify. PHP vil rapportere dette som "SSL: Fatal Protocol Error" i det øyeblikket du når slutten av dataene. For å omgå dette bør du sette error_reporting til et nivå som ekskluderer E_WARNING. PHP-versjoner 4.3.7 og eldre kan oppdage at det er en problematisk IIS på serversiden når du åpner en strøm ved hjelp av en wrapper https:// og viser ingen advarsel. Hvis du bruker fsockopen() for å skape ssl:// socket, er det ditt ansvar å oppdage og undertrykke denne advarselen.