file_get_contents
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
file_get_contents — Dosya içeriğinin tamamını bir dizge olarak döndürür
Açıklama
file_get_contents() işlevi bir dosyanın içeriğini bir
dizgeye okumak için tercih edilen bir işlevdir. Başarımı arttırmak için
eğer işletim sistemi tarafından destekleniyorsa bellek eşlem tekniklerini
kullanılacaktır.
Bilginize:
Boşluklar gibi özel karakterler içeren bir URI'yi açmaya çalışıyorsanız
URI'yi urlencode() ile kodlamalısınız.
Bağımsız Değişkenler
-
dosyaismi
-
İçeriği okunacak dosyanın ismi.
-
use_include_path
-
Bilginize:
Aramanın include path
yönergesinde belirtilen yollarda da yapılacağını belirtmek için
FILE_USE_INCLUDE_PATH
sabiti kullanılabilir.
Ancak, katı
kodlama etkinse FILE_USE_INCLUDE_PATH
sabiti int türünde olduğundan bu mümkün değildir.
Yerine true
kullanın.
-
bağlam
-
stream_context_create() işlevi tarafından
oluşturulmuş geçerli bir bağlam özkaynağı. Özel bir bağlam kullanmaya
ihtiyacınız yoksa bu bağımsız değişkene null
atayabilirsiniz.
-
başlangıç
-
Akım üzerinde okumaya başlanacak konum. Negatif değerler dosyanın
sonundan itibaren sayılır.
Uzak dosyalarda arama (başlangıç
)
desteklenmemektedir. Yerel olmayan dosyalarda küçük başlangıçlarla
çalışmak mümkünse de bu işlem tamponlanmış akım üzerine yapılacağından
sonuçları öngörülemez.
-
uzunluk
-
Okunacak verinin azami uzunluğu. Öntanımlı olarak dosya sonuna kadar
okunur. Bu bağımsız değişken süzgeçler tarafından işlenen akıma ugulanır.
Dönen Değerler
Hata durumunda false
aksi takdirde dosyadan okunan veriyi döndürür.
Uyarı
Bu işlev mantıksal false
değeriyle dönebileceği gibi false
olarak değerlendirilebilecek mantıksal
olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi
Mantıksal Değerler bölümünde
bulunabilir. Bu işlevden dönen değeri sınamak için
===
işleci kullanılabilir.
Hatalar/İstisnalar
dosyaismi
bulunamazsa,
uzunluk
sıfırdan küçükse,
başlangıç
akım üzerinde aranabilir değilse,
E_WARNING
seviyesinde bir hata üretilir.
file_get_contents() bir dizin için çağrılırsa,
Windows'ta ve PHP 7.4'ten beri diğer işletim sistemlerinde
E_WARNING
seviyesinde bir hata üretilir.
Örnekler
Örnek 1 - Site başsayfasının kaynak kodunun çıktılanması
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
Örnek 2 - include_path
içinde arama
<?php
// Katı kodlama etkinse, yani declare(strict_types=1); ise
$file = file_get_contents('./people.txt', true);
// değilse
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>
Örnek 3 - Bir dosyanın belli bir bölümünün okunması
<?php
// 21. karakterden itibaren 14 karakter okuyalım
$section = file_get_contents('./people.txt', FALSE, NULL, 20, 14);
var_dump($section);
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
string(14) "lle Bjori Ro"
Örnek 4 - Akım bağlamı kullanımı
<?php
// Bir akım oluşturalım
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// Yukarıda atadığımız HTTP başlıklarını kullanarak dosyayı açalım
$file = file_get_contents('http://www.example.com/', false, $context);
?>
Notlar
Bilginize:
Bu işlev ikil dosyalarla çalışırken
dosya içeriğini değiştirmez.
İpucu
fopen sarmalayıcıları
etkin kılınmışsa bu işlevde dosya ismi olarak bir URL belirtilebilir.
Dosya isminin nasıl belirtilebileceği hakkında bilgi edinmek için
fopen() işlevine bakılabilir. Sarmalayıcıların neler
yapabildiği, kullanım bilgileri ve bunlar tarafından kullanılan öntanımlı
değişkenler hakkında bilgi Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulanabilir.
Uyarı
Microsoft IIS, SSL kullanırken bir close_notify
göndermeden bağlantıyı kapatarak protokolle çelişir. Verinin sonuna
ulaştığınız zaman PHP bunu "SSL: Fatal Protocol Error" (SSL: "Ölümcül Protokol
Hatası") olarak raporlar. Bu sorunu bertaraf etmek için
error_reporting değerini uyarıları
içermeyecek bir seviyeye indirmek gerekir. PHP, akımı
https://
şeması kullanılarak açılırsa
hatalı IIS sunucu yazılımını saptayıp uyarıları engelleyebilir. Bir
ssl://
soketi oluşturmak için
fsockopen() kullanılacaksa uyarıları saptayıp engellemekten
geliştirici sorumludur.