मैं एक PHP फ़ाइल को एक चर में कैसे लोड करूं?


99

मुझे एक PHP फ़ाइल को एक चर में लोड करने की आवश्यकता है। पसंदinclude();

मैंने इस तरह एक साधारण HTML फ़ाइल लोड की है:

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

लेकिन अब मुझे एक PHP फ़ाइल लोड करने की आवश्यकता है।

जवाबों:


116

मुझे लगता है कि आप PHP द्वारा उत्पन्न सामग्री प्राप्त करना चाहते हैं , यदि ऐसा है तो उपयोग करें:

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

अन्यथा यदि आप PHP फ़ाइल का स्रोत कोड प्राप्त करना चाहते हैं , तो यह एक .txt फ़ाइल के समान है:

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

6
क्या होगा यदि मैं http का उपयोग किए बिना "PHP द्वारा उत्पन्न सामग्री" प्राप्त करना चाहता हूं और सीधे पथ का उपयोग करना चाहता हूं?
ओसा

4
@ ओसा: आपकी आवश्यकताओं के आधार पर, आप शायद उपयोग कर सकते हैं eval()या यदि आप अधिक जटिल कोड के साथ काम कर रहे हैं: github.com/nikic/PHP-Parser
एलिक्स एक्सल

2
एक php पार्सर को लागू करने के लिए बस इतना ही लगता है जैसे एक विशाल ओवरकिल
डेविड फारिना

1
मैं यह नहीं देखता कि यह कैसे POST या GET पास करेगा। मुझे लगता है कि neobie का उत्तर अधिक सही और उचित होगा, क्योंकि बाहरी PHP फ़ाइल को वर्तमान के संदर्भ में संसाधित किया जाएगा।
ADTC

ऊपर दिए गए उदाहरण का उपयोग करके आप get_template_directory_uri () का उपयोग कर सकते हैं और अपनी फ़ाइल पथ में शामिल हो सकते हैं। यह सीधे पथ का उपयोग करने के मुद्दे को हल करेगा। $Vdata = file_get_contents(get_template_directory_uri() . '/path/to/file/in/theme.text');
इयान ब्रूस

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

ob_get_clean ()


1
यह काम करता है! लेकिन जब भी मैं शामिल करने की कोशिश करता हूं: yourfile.php? Id = 3 यह काम नहीं करेगा। कोई सुझाव?
TVgemert

1
क्योंकि अब आप http का उपयोग नहीं कर रहे हैं, आपको उस मामले में $ _GET के माध्यम से मानों को पास करने की आवश्यकता है।
फ्रांसेस्को बेलाडोना

कैसे छवियों के बारे में?
कट्टा

1
युक्ति: PHP 4.3.0 के बाद से, आप अंतिम दो पंक्तियों को छोटा कर सकते हैं $myvar = ob_get_clean();(देखें ob_get_clean प्रलेखन )
ADTC

उत्तम! धन्यवाद।
लोटेकसून

8

यदि आप http: // का उपयोग कर रहे हैं , तो जैसा कि सुझाव दिया गया है, आप केवल PHP स्क्रिप्ट के ouput को पढ़ने में सक्षम होंगे। आप PHP स्क्रिप्ट को केवल तभी पढ़ सकते हैं जब वह आपकी रनिंग स्क्रिप्ट के समान सर्वर पर हो। आप तब कुछ का उपयोग कर सकते हैं

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

नमस्ते यह केवल स्थिर HTML मिलता है। इस उदाहरण को देखें। यदि यह वह फ़ाइल है जिसे हम लोड करने जा रहे हैं; ///////////////// <? php इको ("text1"); ?> Text2 /////////////// यह है बाहर डाल मैं मिला; ///////////////////// पाठ 2 /////////////////////
कोम्बुवा

@Kombuwa, कृपया, कृपया अपने मूल प्रश्न को संपादित करने में अपनी प्रतिक्रिया स्पष्ट कर सकते हैं, जहां आपके पास स्पष्ट रूप से समझाने के लिए अधिक स्थान है? धन्यवाद =)
डेविड कहते हैं मोनिका

7

यदि आप फ़ाइल को वेबसर्वर के माध्यम से चलाने के बिना लोड करना चाहते हैं, तो निम्न कार्य करना चाहिए।

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

यह तब फ़ाइल सामग्री का मूल्यांकन करेगा। इसका मूल्यांकन करने के लिए PHP फ़ाइल को पूरी तरह से <?phpऔर ?>टैग के साथ बनाने की आवश्यकता होगी eval


मुझे यह तरीका पसंद है। बस यह कि मेरी फाइल पूरी तरह से <? Php और?> टैग के साथ नहीं है, इसका मूल्यांकन करने के लिए eval। क्या कोई और तरीका है?
इसका मैडोम

यदि आप उस फ़ाइल में php कोड लिखते हैं तो यह काम नहीं करता है। php
फर्नांडो टोरेस

4

सैद्धांतिक रूप से आप बस fopen का उपयोग कर सकते हैं, फिर स्ट्रीम_get_contents का उपयोग करें।

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

यह आपके लिए पूरी फ़ाइल को $ स्ट्रिंग में पढ़ना चाहिए, और इसका मूल्यांकन नहीं करना चाहिए। हालाँकि मुझे आश्चर्य है कि जब आप स्थानीय पथ निर्दिष्ट करते हैं तो file_get_contents काम नहीं करता था ...।


3

वैकल्पिक रूप से, आप आउटपुट बफ़रिंग शुरू कर सकते हैं, एक शामिल / आवश्यकता कर सकते हैं, और फिर बफ़र करना बंद कर सकते हैं। Ob_get_contents () के साथ, आप बस उस सामग्री को प्राप्त कर सकते हैं जो उस अन्य PHP फ़ाइल द्वारा एक चर में बनाई गई थी।


3

यदि आपकी फाइल में रिटर्न स्टेटमेंट इस तरह है:

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

आप इसे इस तरह एक चर में प्राप्त कर सकते हैं:

$data = include $filePath;

1
plus1 धन्यवाद, यह वही है जिसकी मुझे तलाश थी
व्हिटसिरोई

1

अगर आपके सर्वर ने allow_url_fopen को बंद कर दिया है तो file_get_contents () काम नहीं करेगा । अधिकांश साझा वेब होस्ट सुरक्षा जोखिमों के कारण इसे डिफ़ॉल्ट रूप से बंद कर देते हैं। इसके अलावा, PHP6 में , allow_url_fopen विकल्प अब मौजूद नहीं होगा और सभी फ़ंक्शन ऐसा कार्य करेंगे जैसे कि इसे बंद करने की अनुमति है। तो यह उपयोग करने के लिए एक बहुत ही बुरा तरीका है।

यदि आप http के माध्यम से फ़ाइल एक्सेस कर रहे हैं तो उपयोग करने का आपका सबसे अच्छा विकल्प cURL है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.