2009-02-09 9 views
48

(स्ट्रिंग के रूप वापसी मान के निर्माण के बिना) मैं एक PHP समारोह है कि मैं उत्पादन करने के लिए HTML का एक मानक ब्लॉक का उपयोग कर रहा है। यह वर्तमान में इस तरह दिखता है:क्या PHP फ़ंक्शन में HTML को वापस करने का कोई तरीका है?

<?php function TestBlockHTML ($replStr) { ?> 
    <html> 
    <body><h1> <?php echo ($replStr) ?> </h1> 
    </html> 
<?php } ?> 

मैं (बल्कि गूंज से) समारोह के अंदर वापस जाने के लिए एचटीएमएल चाहते हैं। स्ट्रिंग में एचटीएमएल (उपरोक्त) के निर्माण के बिना ऐसा करने का कोई तरीका है?

उत्तर

71

आप एक heredoc, जो चर प्रक्षेप का समर्थन करता है का उपयोग कर सकते: आप ob_start का उपयोग कर echo एड पाठ पर कब्जा कर सकते हैं हालांकि मैनुअल में चेतावनी पर ध्यान देना बंद करें - समापन रेखा में किसी भी सफेद जगह नहीं होनी चाहिए, इसलिए इंडेंट नहीं किया जा सकता है।

+2

इसके अलावा <<< एचटीएमएल हेरेडोक पहचानकर्ता को इंडेंट नहीं किया जाना चाहिए, यह है कि अगर उसके पास "रिटर्न" जैसे कुछ नहीं है। –

+10

इसे जितना चाहें उतना इंडेंट किया जा सकता है, लेकिन पहचानकर्ता के ठीक बाद एक नई लाइन होनी चाहिए। –

+0

आप ब्रेसिज़ से बच सकते हैं यदि वर एक सरणी में गैर है:

$ replStr

या

{$ सरणी [ 'var]}

WalterV

54

हाँ, वहाँ है:

function TestBlockHTML ($replStr) { 
return <<<HTML 
    <html> 
    <body><h1>{$replStr}</h1> 
    </body> 
    </html> 
HTML; 
} 

: यह काफी साफ लग रही बनाने

<?php function TestBlockHTML ($replStr) { ob_start(); ?> 
    <html> 
    <body><h1> <?php echo ($replStr) ?> </h1> 
    </html> 
<?php 
    return ob_get_clean(); 
} ?> 
+0

वास्तव में, इस तरह से वाक्य रचना पर प्रकाश डाला और कुंजी है शब्द file_get_contents() का उपयोग करें और एक टेम्पलेट HTML पृष्ठ है एक स्ट्रिंग में सामग्री होने के अलावा, वे सामान्य HTML होने के कारण रंगीन होते हैं। निश्चित रूप से रख-रखाव के लिए एक बेहतर जवाब है, जो हमेशा पहले –

+0

आप उत्पादन बफर जब यह ठीक से काम करने लगता है क्यों लूं आना चाहिए? ' \t

\t

Lorem ipsum dolar

' – Joren

+1

@ जोरेन क्योंकि यह स्पष्ट रूप से ओपी नहीं चाहता है। –

5

एक टेम्पलेट फ़ाइल बनाएँ और पढ़ने/फ़ाइल अद्यतन करने के लिए एक टेम्पलेट इंजन का उपयोग करें। यह भविष्य में आपके कोड की रखरखाव के साथ-साथ तर्क से अलग प्रदर्शन को बढ़ाएगा।

एक उदाहरण Smarty का उपयोग कर:

टेम्पलेट फ़ाइल

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head><title>{$title}</title></head> 
<body>{$string}</body> 
</html> 

कोड

function TestBlockHTML(){ 
    $smarty = new Smarty(); 
    $smarty->assign('title', 'My Title'); 
    $smarty->assign('string', $replStr); 
    return $smarty->render('template.tpl'); 
} 
14

यह एक अधूरा समाधान हो सकता है, और मैं किसी को भी है कि क्या उनका कहना है कि सराहना करेंगे यह एक बुरा विचार है, क्योंकि यह कार्यों का मानक उपयोग नहीं है।

function noStrings() { 
    echo ''?> 
     <div>[Whatever HTML you want]</div> 
    <?php; 
} 

सिर्फ 'कॉल' समारोह:

noStrings(); 

और यह होगा मैं निम्नलिखित के साथ एक स्ट्रिंग के रूप में वापसी मान के निर्माण के बिना कुछ सफलता एचटीएमएल एक PHP समारोह से बाहर हो रही लिया है आउटपुट:

<div>[Whatever HTML you want]</div> 

इस विधि का उपयोग करके, आप फ़ंक्शन के भीतर PHP चर को भी परिभाषित कर सकते हैं और HTML के अंदर उन्हें गूंज सकते हैं।

+0

/mindblown आप यह क्यों काम करता है जब सब और विफल रहा है व्याख्या कर सकते हैं? –

+2

यह 'echo' के बिना ठीक काम करता है, बस'?> Html vladkras

2

करना है एक और तरीका है

खाका पृष्ठ

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head><title>$title</title></head> 
<body>$content</body> 
</html> 

पीएचपी समारोह

function YOURFUNCTIONNAME($url){ 

$html_string = file_get_contents($url); 
return $html_string; 

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