Bir PHP dosyasını bir değişkene nasıl yüklerim?


101

Bir değişkene bir PHP dosyası yüklemem gerekiyor. Sevmekinclude();

Bunun gibi basit bir HTML dosyası yükledim:

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

Ama şimdi bir PHP dosyası yüklemem gerekiyor.

Yanıtlar:


117

PHP tarafından oluşturulan içeriği almak istediğinizi varsayalım , öyleyse şunu kullanın:

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

Aksi takdirde , PHP dosyasının kaynak kodunu almak istiyorsanız , .txt dosyasıyla aynıdır:

$Vdata = file_get_contents('path/to/YOUR/FILE.php');

6
http kullanmadan "PHP tarafından oluşturulan içeriği" almak ve doğrudan yolu kullanmak istersem ne olur?
Osa

4
@Osa: İhtiyaçlarınıza bağlı olarak, muhtemelen kullanabilir eval()veya daha karmaşık bir kodla uğraşıyorsanız: github.com/nikic/PHP-Parser .
Alix Axel

2
sadece bunun için bir php ayrıştırıcısı uygulamak çok büyük bir aşırılık gibi görünüyor
David Fariña

1
Bunun POST veya GET'i nasıl geçeceğini anlamıyorum. Harici PHP dosyası mevcut dosya bağlamında işleneceği için neobie'nin cevabının daha doğru ve uygun olacağını düşünüyorum.
ADTC

Yukarıdaki örneği kullanarak get_template_directory_uri () kullanabilir ve dosya yolunuza katılabilirsiniz. Bu, doğrudan bir yol kullanma sorununu çözecektir. $Vdata = file_get_contents(get_template_directory_uri() . '/path/to/file/in/theme.text');
Ian Bruce

125
ob_start();
include "yourfile.php";
$myvar = ob_get_clean();

ob_get_clean ()


1
Bu işe yarıyor! Ama ne zaman eklemeye çalışsam: yourfile.php? İd = 3 işe yaramayacak. Herhangi bir öneri?
tvgemert

1
Artık http kullanmadığınız için, bu durumda değerleri $ _GET üzerinden geçirmeniz gerekir.
Francesco Belladonna

Görüntüler nasıl?
kta

1
İpucu: PHP 4.3.0'dan beri, son iki satırı kısaltabilirsiniz $myvar = ob_get_clean();( ob_get_clean belgelerine bakın )
ADTC

Mükemmel! Teşekkür ederim.
lowtechsun

9

Eğer http: // kullanıyorsanız , eyze'nin önerdiği gibi, sadece PHP betiğinin çıktısını okuyabileceksiniz. PHP betiğinin kendisini, yalnızca çalışan betiğinizle aynı sunucuda ise okuyabilirsiniz. Daha sonra şöyle bir şey kullanabilirsiniz

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

merhaba bu sadece statik html alır. bu örneğe bakın. yükleyeceğimiz dosya buysa; ///////////////// <? php echo ("metin1"); ?> Text2 /////////////// aldığım çıkış budur; //////////////////// Text2 ///////////////////
Kombuwa

@Kombuwa, lütfen, açık bir şekilde açıklamak için daha fazla alana sahip olduğunuz orijinal sorunuza bir düzenleme yaparak yanıtınızı netleştirebilir misiniz? Teşekkürler =)
David, Monica'yı

7

Dosyayı web sunucusu üzerinden çalıştırmadan yüklemek istiyorsanız, aşağıdakiler çalışmalıdır.

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

Bu yükleyecek ve daha sonra dosya içeriğini değerlendirecektir. PHP dosyasının değerlendirilmesi için <?phpve ?>etiketleriyle tam olarak oluşturulması evalgerekir.


Bu yöntemi beğendim. Değerlendirmek için dosyam <? Php ve?> Etiketleriyle tam olarak oluşturulmamış. Başka bir yolu var mı?
ItsMeDom

Bu dosyaya php kodu yazarsanız çalışmaz. Php
Fernando Torres

5

Dosyanızda şöyle bir dönüş ifadesi varsa:

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

Bunu aşağıdaki gibi bir değişkene götürebilirsiniz:

$data = include $filePath;

2
artı1 Teşekkür ederim, aradığım şey buydu
whitesiroi

4

Teorik olarak sadece fopen ve ardından stream_get_contents kullanabilirsiniz.

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

Bu sizin için dosyanın tamamını $ string olarak okumalı ve değerlendirmemelidir. Yerel yolu belirttiğinizde file_get_contents'ın çalışmamasına şaşırdım.


3

Alternatif olarak, çıktı arabelleğini başlatabilir, dahil etme / gerektirme yapabilir ve ardından arabelleğe almayı durdurabilirsiniz. Ob_get_contents () ile, diğer PHP dosyası tarafından çıkarılan şeyleri bir değişkene alabilirsiniz.


1

sunucunuz allow_url_fopen kapalıysa file_get_contents () çalışmayacaktır . Çoğu paylaşılan web barındırıcısı, güvenlik riskleri nedeniyle varsayılan olarak kapatılmıştır. Ayrıca, PHP6'da , allow_url_fopen seçeneği artık mevcut olmayacak ve tüm işlevler, sürekli olarak kapalı olarak ayarlanmış gibi davranacaktır. Yani bu, kullanılması çok kötü bir yöntem.

Dosyaya http üzerinden erişiyorsanız kullanmak için en iyi seçeneğiniz cURL'dir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.