2008-09-13 18 views
9

मैं php में पता अंदर एक समारोह का उपयोग करने के चर के अंदर चर एम्बेड कर सकते हैं, जैसे कि यह संभव है:PHP में एक चर

<? $var1 = "I\'m including {$var2} in this variable.."; ?> 

लेकिन मैं सोच रहा था कि कैसे, और अगर यह संभव हो गया था एक समारोह में शामिल करने के एक चर के अंदर। मैं जानता हूँ कि मैं सिर्फ लिख सकते हैं:

<?php 
$var1 = "I\'m including "; 
$var1 .= somefunc(); 
$var1 = " in this variable.."; 
?> 

लेकिन क्या होगा अगर मैं उत्पादन के लिए एक लंबे चर है, और मैं इस पर हर बार ऐसा नहीं करना चाहते हैं, या क्या मैं बहुत से कार्यों का उपयोग करना चाहते हैं:

<?php 
$var1 = <<<EOF 
    <html lang="en"> 
     <head> 
      <title>AAAHHHHH</title> 
      <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
     </head> 
     <body> 
      There is <b>alot</b> of text and html here... but I want some <i>functions</i>! 
      -somefunc() doesn't work 
      -{somefunc()} doesn't work 
      -$somefunc() and {$somefunc()} doesn't work of course because a function needs to be a string 
      -more non-working: ${somefunc()} 
     </body> 
    </html> 
EOF; 
?> 

या मैं कोड की है कि लोड में गतिशील परिवर्तन चाहते हैं:

<? 
function somefunc($stuff) { 
    $output = "my bold text <b>{$stuff}</b>."; 
    return $output; 
} 

$var1 = <<<EOF 
    <html lang="en"> 
     <head> 
      <title>AAAHHHHH</title> 
      <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
     </head> 
     <body> 
      somefunc("is awesome!") 
      somefunc("is actually not so awesome..") 
      because somefunc("won\'t work due to my problem.") 
     </body> 
    </html> 
EOF; 
?> 

खैर?

+1

आप डबल कोट्स के अंदर एक ही उद्धरण से क्यों बच रहे हैं? ;) – Till

उत्तर

25

समारोह कॉल के भीतर तार एक चर प्रकार्य के नाम वाले कॉल करने के लिए होने से PHP5 के बाद से समर्थित हैं:

<? 
function somefunc($stuff) 
{ 
    $output = "<b>{$stuff}</b>"; 
    return $output; 
} 
$somefunc='somefunc'; 
echo "foo {$somefunc("bar")} baz"; 
?> 

इच्छा उत्पादन "foo <b>bar</b> baz"।

<? 
echo "foo " . somefunc("bar") . " baz"; 
?> 

या एक अस्थायी चर के लिए असाइन:

<? 
$bar = somefunc("bar"); 
echo "foo {$bar} baz"; 
?> 
+4

मुझे लगता है कि काम करता है, लेकिन मैं कभी ऐसा नहीं करता। यह खराब अभ्यास चिल्ला रहा है। कोड पठनीयता आदि के बारे में सोचें .. छह महीने में अपने कोड पर वापस आएं और अपने एचटीएमएल मार्कअप के अंदर सभी फ़ंक्शन कॉल को समझें। – Till

+0

आपको कभी भी अपने दृश्य के अंदर एक फ़ंक्शन को कॉल नहीं करना चाहिए जैसे कि htmlspecialchars (जो इसके उद्देश्य के लिए बहुत लंबा फ़ंक्शन नाम है, आपको स्क्रू करता है, PHP) ... –

+0

न केवल आसान, लेकिन साफ ​​और पठनीय। – gd1

2

"bla bla bla".function("blub")." and on it goes"

मैं यह आसान है लेकिन या तो सिर्फ स्ट्रिंग के बाहर समारोह कॉल करने के लिए (और यह PHP4 में काम करता है) लगता है

-1

जेसन डब्ल्यू ने जो कुछ कहा, उस पर कुछ विस्तार करना:

 
I find it easier however (and this works in PHP4) to either just call the 
function outside of the string: 

<? 
echo "foo " . somefunc("bar") . " baz"; 
?> 

तुम भी सिर्फ इस समारोह कॉल सीधे अपने html में एम्बेड कर सकते हैं, जैसे:

<? 

function get_date() { 
    $date = `date`; 
    return $date; 
} 

function page_title() { 
    $title = "Today's date is: ". get_date() ."!"; 
    echo "$title"; 
} 

function page_body() { 
    $body = "Hello"; 
    $body = ", World!"; 
    $body = "\n
\n"; $body = "Today is: " . get_date() . "\n"; } ?> <html> <head> <title><? page_title(); ?></title> </head> <body> <? page_body(); ?> </body> </html>
+1

उदाहरण मानता है कि आपके पास छोटे टैग सक्षम हैं –

+0

मुझे लगता है कि आपका मतलब $ शरीर है। = ", विश्व!"; (बराबर से पहले बिंदु)। बस अगर कोई आपके उदाहरण की प्रतिलिपि बनाता है/चिपकाता है ... – Don

+0

पृष्ठ_शीर्षक फ़ंक्शन कुछ गूंजता है, इसलिए छोटे टैग के साथ काम नहीं करेगा। // page_body फ़ंक्शन कुछ भी नहीं देता है, इसलिए यह छोटे टैग सक्षम के साथ कुछ भी नहीं करेगा। // इसके अलावा, भले ही यह कुछ वापस करेगा, xaddict

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