2011-05-23 13 views
21
<? switch ($var): ?> 
    <? case 1: ?> 
    It's 1! 
    <? break ?> 
<? endswitch ?> 

मैं ऐसा कुछ करना चाहता हूं, दूसरे शब्दों में PHP टेम्पलेट्स में स्विच स्टेटमेंट का उपयोग करें। यदि कथन के साथ यह संभव है। उपरोक्त कोड PHP 5.3 में Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT उत्पन्न करता है। PHP docs बताता है कि यह संभव होना चाहिए।PHP में इंजेक्शन एचटीएमएल

क्या कोई यह पुष्टि कर सकता है कि यह काम नहीं करता है, या बल्कि मुझे बताओ कि मैं क्या गलत कर रहा हूं?

धन्यवाद।

+1

आप ' Spudley

+1

आप इसे दस्तावेज़ में कहां देखते हैं? मैं आपके द्वारा प्रदान किए गए लिंक पर गया, लेकिन मुझे स्विच स्टेटमेंट के साथ मिश्रित इनलाइन HTML का समर्थन करने के बारे में कुछ भी नहीं मिला। –

+1

उत्तर

43

मैंने php दस्तावेज़ में पढ़ा है कि आपका उदाहरण काम नहीं करना चाहिए।

स्विच स्टेटमेंट और पहले मामले के बीच कोई भी आउटपुट (व्हाइटस्पेस समेत) परिणामस्वरूप एक वाक्यविन्यास त्रुटि होगी। उदाहरण के लिए, इस अमान्य है

बजाय इस प्रयास करें:

<div> 
<?php switch($variable): 
case 1: ?> 
    <div> 
    Newspage 
    </div> 
<?php break; ?> 
<?php case 2: ?> 
    </div> 
    Forum 
    <div> 
<?php break; ?> 
<?php endswitch; ?> 
</div> 

http://php.net/control-structures.alternative-syntax

+3

धन्यवाद! (हर किसी के लिए, कोड [इस टिप्पणी] से है (http://se2.php.net/manual/en/control-structures.alternative-syntax.php#80668)) – Znarkus

14

आप अपने स्विच जो

switch($var): 
echo "\n\t"; 
case 1: 
हो जाता है के बाद

?>\n\n<? 

है 10

सुशोभित एचटीएमएल की बजाय एचटीएमएल के साथ PHP के रूप में अपनी स्क्रिप्ट के बारे में सोचें। PHP बाइनरी फ़ाइल को पहले प्राप्त करता है।

आप असुरक्षित HTML को प्रतिबिंबित करने के लिए हेरडोक जैसे कुछ का उपयोग करना चाहेंगे। ?

+0

आह जो इसे समझाता है :) धन्यवाद! – Znarkus

2

मैं इस आसान स्वरूपण, परीक्षण किया है और काम कर का प्रस्ताव:

<? switch($var) : case 1 : ?> 

    <div>One</div> 

<? break; case 2 : ?> 

    <div>Two</div> 

<? break; case 3 : ?> 

    <div>Three</div> 

<? break; endswitch; ?> 
संबंधित मुद्दे