Bagaimana cara memuat file PHP ke dalam variabel?

98

Saya perlu memuat file PHP ke dalam variabel. Sukainclude();

Saya telah memuat file HTML sederhana seperti ini:

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

Tapi sekarang saya perlu memuat file PHP.

Kombuwa
sumber

Jawaban:

116

Saya kira Anda ingin mendapatkan konten yang dihasilkan oleh PHP , jika demikian gunakan:

$Vdata = file_get_contents('http://YOUR_HOST/YOUR/FILE.php');

Jika tidak, jika Anda ingin mendapatkan kode sumber dari file PHP , itu sama dengan file .txt:

$Vdata = file_get_contents('path/to/YOUR/FILE.php');
Alix Axel
sumber
6
bagaimana jika saya ingin mendapatkan "konten yang dihasilkan oleh PHP" tanpa menggunakan http dan langsung menggunakan jalur?
Osa
4
@Osa: Tergantung pada kebutuhan Anda, Anda mungkin dapat menggunakan eval()atau jika Anda berurusan dengan kode yang lebih rumit: github.com/nikic/PHP-Parser .
Alix Axel
2
menerapkan parser php hanya untuk yang tampak seperti pembunuhan besar-besaran
David Fariña
1
Saya tidak melihat bagaimana ini akan melewati POST atau GET. Saya pikir jawaban neobie akan lebih tepat dan tepat, karena file PHP eksternal akan diproses dalam konteks yang sekarang.
ADTC
Menggunakan contoh di atas, Anda dapat menggunakan get_template_directory_uri () dan bergabung ke jalur file Anda. Ini akan menyelesaikan masalah menggunakan jalur langsung. $Vdata = file_get_contents(get_template_directory_uri() . '/path/to/file/in/theme.text');
Ian Bruce
124
ob_start();
include "yourfile.php";
$myvar = ob_get_clean();

ob_get_clean ()

neobie
sumber
1
Itu bekerja! Tetapi setiap kali saya mencoba memasukkan: yourfile.php? Id = 3 itu tidak akan berhasil. Ada saran?
tvgemert
1
Karena Anda tidak lagi menggunakan http, Anda harus meneruskan nilai melalui $ _GET dalam kasus tersebut.
Francesco Belladonna
Bagaimana dengan gambarnya?
kta
1
Tip: Sejak PHP 4.3.0, Anda dapat mempersingkat dua baris terakhir menjadi hanya $myvar = ob_get_clean();(lihat dokumentasi ob_get_clean )
ADTC
Sempurna! Terima kasih.
lowtechsun
7

Jika Anda menggunakan http: // , seperti yang disarankan eyze, Anda hanya dapat membaca ouput dari skrip PHP. Anda hanya dapat membaca skrip PHP itu sendiri jika berada di server yang sama dengan skrip yang sedang berjalan. Anda kemudian bisa menggunakan sesuatu seperti

$Vdata = file_get_contents('/path/to/your/file.php");
Jonathan Weiss
sumber
hai ini hanya mendapatkan html statis. lihat contoh ini. jika ini adalah file yang akan kita muat; ///////////////// <? php echo ("text1"); ?> Text2 /////////////// ini hasil yang saya dapatkan; //////////////////// Text2 ///////////////////
Kombuwa
@Kuwa, dapatkah Anda menjelaskan tanggapan Anda dalam edit pertanyaan awal Anda, di mana Anda memiliki lebih banyak ruang untuk menjelaskan dengan jelas? Terima kasih =)
David mengatakan mengembalikan Monica
7

Jika Anda ingin memuat file tanpa menjalankannya melalui server web, berikut ini seharusnya berfungsi.

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

Ini akan memuat kemudian mengevaluasi isi file. File PHP perlu dibentuk sepenuhnya dengan tag <?phpdan ?>untuk evalmengevaluasinya.

Jess
sumber
Saya suka metode ini. Hanya saja file saya tidak sepenuhnya dibentuk dengan tag <? Php dan?> Untuk eval untuk mengevaluasinya. Apakah ada cara lain?
ItsMeDom
Tidak bekerja jika Anda menulis kode php ke file.php
Fernando Torres
4

Secara teoritis Anda bisa menggunakan fopen, lalu gunakan stream_get_contents.

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

Itu akan membaca seluruh file menjadi $ string untuk Anda, dan seharusnya tidak mengevaluasinya. Meskipun saya terkejut bahwa file_get_contents tidak berfungsi ketika Anda menentukan jalur lokal ....

Zeroshade
sumber
3

Atau, Anda dapat memulai buffering keluaran, melakukan include / require, lalu menghentikan buffering. Dengan ob_get_contents (), Anda bisa mendapatkan hal-hal yang dikeluarkan oleh file PHP lain itu ke dalam variabel.

Alex Weinstein
sumber
3

Jika file Anda memiliki pernyataan pengembalian seperti ini:

<?php return array(
  'AF' => 'Afeganistão',
  'ZA' => 'África do Sul',
  ...
  'ZW' => 'Zimbabué'
);

Anda bisa mendapatkan ini ke variabel seperti ini:

$data = include $filePath;
António Almeida
sumber
1
plus1 Terima kasih, inilah yang saya cari
whitesiroi
1

file_get_contents () tidak akan berfungsi jika server Anda menonaktifkan allow_url_fopen . Sebagian besar host web bersama telah menonaktifkannya secara default karena risiko keamanan. Selain itu, di PHP6 , opsi allow_url_fopen tidak akan ada lagi dan semua fungsi akan bertindak seolah-olah dinonaktifkan secara permanen. Jadi ini adalah metode yang sangat buruk untuk digunakan.

Pilihan terbaik Anda untuk digunakan jika Anda mengakses file melalui http adalah cURL

Menandai
sumber