2010-12-09 13 views
6

मैं एक समारोह है कि मेरा पेज के उत्पादन नियंत्रित कर रहा है है:पीएचपी एक चर के अंदर शामिल

$page = "<div class='media-title'><h2>{$title}</h2></div><div class='media-image'>{$image}</div><div class='media-desc'>{$desc}</div>";

मैं एक फ़ाइल "box.php" कि एचटीएमएल कि में परिभाषित किया गया है अंदर शामिल करना चाहते हैं $page चर। मैं इस की कोशिश की:

$page = "<div class='media-title'><h2>{$title}</h2></div><div class='media-image'>{$image}</div><div class="inlinebox">" . include("box.php"); . "</div><div class='media-desc'>{$desc}</div>";

... लेकिन यह काम नहीं किया। मैं एक चर के अंदर एक php कैसे शामिल कर सकते हैं?

उत्तर

9

How can I put a php include inside of a variable?

# hello.php 
<?php 
    return "Hello, World!"; 
?> 

# file.php 
$var = include('hello.php'); 
echo $var; 

मैं आम तौर पर हालांकि ऐसी बात से बच जाएंगे।

+0

2 प्रश्न: 1) यह मेरे प्रश्न का उत्तर कैसे देता है? यह मुझे एक चर के अंदर कथन शामिल करने के लिए कैसे नहीं दिखाता है। 2) आप ऐसी चीज से क्यों बचेंगे? – mattz

+0

@mattz: असल में यह सवाल का जवाब देता है, बस एक सेकंड के लिए आप जो देखते हैं उसके बारे में सोचें ... वह शामिल करने के लिए 'echo' है। – Stephen

+0

@ स्टीफन, लेकिन क्या मैं इसे अपने प्रश्न में एक चर परिभाषा के अंदर कर सकता हूं? जब मैं करता हूं तो मुझे एक त्रुटि मिलती है: 'पार्स त्रुटि: वाक्यविन्यास त्रुटि, अप्रत्याशित T_ECHO ... ' – mattz

3

सबसे पहले, कथन के अंदर से अर्धविराम का उपयोग न करें।
दूसरा, कंटेनर में शामिल कथन को लपेटें।

$page = "<div class='media-title'><h2>{$title}</h2></div> 
<div class='media-image'>{$image}</div><div class="inlinebox">" . 
(include "box.php") . "</div><div class='media-desc'>{$desc}</div>"; 

अंत: "box.php" फ़ाइल में, आपको निम्न कार्य करने होंगे:

<?php 
ob_start(); 

// your code goes here 

return ob_get_clean(); 

संपादित करें: PHP Manual - Return: समारोह प्रतियोगिता के बाहर वापसी बुला के बारे में कुछ जानकारी।

+0

इससे बफरिंग चालू हो जाएगी। एक अच्छा तरीका भी है। – santiagobasulto

+0

मैंने कोशिश की लेकिन कुछ भी रिटर्न नहीं हुआ। इसका परीक्षण करने के लिए मैंने ' 'मेरे box.php की सामग्री के रूप में, और यह कुछ भी नहीं किया। मैंने ob_start और ob_clean को हटा दिया और यह "परीक्षण" शब्द को 4 बार आउटपुट किया। शीर्षलेख में दो बार, एक बार ऊपर जहां यह होना चाहिए और एक बार नीचे जहां यह होना चाहिए। – mattz

2

संपादित करें: अगर यह उपयोगी है

पता नहीं है, लेकिन मुझे लगता है कि है कि एक फ़ाइल सहित एचटीएमएल का एक टुकड़ा पाने के लिए, एक अच्छा विकल्प नहीं है। यह स्केलेबल नहीं है। आप एमवीसी जैसे कुछ के साथ कोशिश कर सकते हैं। आप अपने नियंत्रक से जो चाहते हैं उसकी सामग्री को प्रस्तुत करने के लिए कह सकते हैं।

$view = $controler->getElement('box'); 

$page = "<div class='media-title'><h2>{$title}</h2></div><div class='media-image'>{$image}</div><div class="inlinebox">" . $view . "</div><div class='media-desc'>{$desc}</div>"; 

अपना कोड डीक्यूपल करने का प्रयास करें।

मैं आपको कुछ एमवीसी फ्रेमवर्क देखने के लिए सलाह देता हूं, मेरी राय में, सबसे अच्छा केकपीएचपी है।

+0

मैं एमवीसी के बारे में आपसे सहमत हूं, और विशेष रूप से केकपीएचपी बहुत ही बढ़िया है। लेकिन छोटी परियोजनाओं में (जहां मैं चीजों को तेज़ी से पूरा करना चाहता हूं और शांत परियोजनाओं पर जाना चाहता हूं), मैं HTML के लिए शामिल का उपयोग करता हूं ... जो कुछ भी कहा जाता है, ऐसा लगता है कि ओपी एक टेम्पलेटिंग सिस्टम का उपयोग कर रहा है, और इस प्रकार यह एक नहीं है छोटी परियोजना, और इस प्रकार एमवीसी निश्चित रूप से मदद करनी चाहिए, और इस प्रकार आपको +1 मिल जाएगा। – Stephen

+1

प्रतिक्रिया के लिए धन्यवाद लेकिन मुझे लगता है कि यह मेरे सिर पर थोड़ा सा है। मुझे यकीन है कि यह एक बहुत अच्छा तरीका है, लेकिन मुझे नहीं पता कि आप किस चीज के बारे में बात कर रहे हैं :) – mattz

+0

हाहा, ठीक है। यह एक अच्छा निष्कर्ष है। मैं आपसे सहमत हूं कि ढांचे का उपयोग करके छोटी परियोजनाओं के लिए एक अच्छा निर्णय नहीं है। लेकिन, चीजें "व्यवस्थित" होने के लिए अच्छा है। मैं एक छोटे से रूटिंग ढांचे की तलाश में हूं, लेकिन, एक नहीं मिला। फिर, मैंने इस तरह की परिस्थितियों के लिए अपना खुद का कोड बनाया। केवल "एक बार" कोड को कोड करना महत्वपूर्ण है, और फिर इन चीजों का पुन: उपयोग करें। – santiagobasulto

13

php.net से

// put this somewhere in your main file, outside the 
// current function that contains $page 
function get_include_contents($filename) { 
    if (is_file($filename)) { 
     ob_start(); 
     include $filename; 
     $contents = ob_get_contents(); 
     ob_end_clean(); 
     return $contents; 
    } 
    return false; 
} 

// put this inside your current function 
$string = get_include_contents('box.php'); 
$page = '<div class="media-title"><h2>{$title}</h2></div>'; 
$page .= '<div class="media-image">{$image}</div>'; 
$page .= '<div class="inlinebox">' . $string . '</div>'; 
$page .= '<div class="media-desc">{$desc}</div>'; 
+1

यह फ़ंक्शन वास्तविक है? डी: +1 –

+0

मुझे यकीन नहीं है कि यहां क्या करना है, वह $ पृष्ठ चर पहले से ही एक फ़ंक्शन के अंदर था। – mattz

+0

उम्मीद है कि टिप्पणियां अब आपके लिए इस मुद्दे को उजागर करती हैं। – Stephen

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^