मैं HTML को PHP में कैसे गूँज सकता हूँ?


122

मैं पेज बनाने के लिए सशर्त रूप से HTML उत्पादन करना चाहता हूं, इसलिए PHP 4+ में HTML के मल्टीलाइन स्निपेट्स को प्रतिध्वनित करने का सबसे आसान तरीका क्या है? क्या मुझे स्मार्ट जैसी टेम्प्लेट रूपरेखा का उपयोग करने की आवश्यकता होगी?

echo '<html>', "\n"; // I'm sure there's a better way!
echo '<head>', "\n";
echo '</head>', "\n";
echo '<body>', "\n";
echo '</body>', "\n";
echo '</html>', "\n";

2
\ n html में काम नहीं करता है। मुझे लगता है कि आप का मतलब "इको" था;
वीशी ज़ेंग

अच्छा प्रचारक आपके तर्क को दृश्य से अलग करने के लिए कहता है (जैसे MVC में)। अपने तर्क को पटकथा तर्क से अलग करने के लिए ट्वीग जैसे टेंगिट इंजन का उपयोग करें - twig.sensiolabs.org अपनी HTML मार्कअप को अपने php स्क्रिप्ट में लागू करने के लिए प्रेरित करें, इसे अन्य तरीके से करें। टहनी मंदिर में php चर लागू करें। जैसे ही आपको मिलता है कि मेरा मतलब है कि आप इस aproach के लाभ देखेंगे। इस तरह के मुद्दों को हल करते हैं। कोड के छोटे चैंक के लिए आप अपना स्वयं का टहनी विस्तार लिख सकते हैं जिसका उपयोग आप कुछ जटिल लेकिन दोहराए गए कार्यों को करने के लिए एकांत में कर सकते हैं।
DevWL

जवाबों:


269

PHP में HTML को इको करने के कुछ तरीके हैं।

1. PHP टैग्स के बीच

<?php if(condition){ ?>
     <!-- HTML here -->
<?php } ?>

2. एक गूँज में

if(condition){
     echo "HTML here";
}

इकोस के साथ, यदि आप अपने HTML में दोहरे उद्धरण चिह्नों का उपयोग करना चाहते हैं, तो आपको एकल उद्धरण इकोस का उपयोग करना चाहिए:

echo '<input type="text">';

या आप उन्हें इस तरह से बच सकते हैं:

echo "<input type=\"text\">";

3. हेरेडोक्स

4. नाऊडॉक्स (PHP 5.3.0 के रूप में)

टेम्पलेट इंजन का उपयोग उन दस्तावेजों में PHP का उपयोग करने के लिए किया जाता है जिनमें ज्यादातर HTML होते हैं। वास्तव में, PHP का मूल उद्देश्य एक अस्थायी भाषा होना था। यही कारण है कि PHP के साथ आप लघु टैग जैसी चीजों को प्रतिध्वनित करने के लिए चर (जैसे <?=$someVariable?>) का उपयोग कर सकते हैं ।

अन्य टेम्प्लेट इंजन हैं (जैसे कि स्मार्टी, ट्विग इत्यादि) जो वाक्य रचना को और भी अधिक संक्षिप्त (जैसे {{someVariable}}) बनाते हैं ।

टेम्पलेट इंजन का उपयोग करने का प्राथमिक लाभ कोडिंग ( व्यावसायिक तर्क ) से डिज़ाइन ( प्रस्तुति तर्क ) को अलग रख रहा है । यह लंबे समय तक बनाए रखने के लिए कोड को क्लीनर और आसान भी बनाता है।

यदि आपके पास कोई और प्रश्न है तो एक टिप्पणी छोड़ने के लिए स्वतंत्र महसूस करें।

PHP प्रलेखन में इन चीजों पर आगे पढ़ना उपलब्ध है ।


नोट: PHP लघु टैग <?और ?>हतोत्साहित किया जाता है क्योंकि वे केवल उपलब्ध हैं यदि short_open_tagphp.ini कॉन्फ़िगरेशन फ़ाइल निर्देश के साथ सक्षम है , या यदि PHP --enable-short-tagsविकल्प के साथ कॉन्फ़िगर किया गया था । वे 5.4 पर से सेटिंग की परवाह किए बिना उपलब्ध हैं


7
यहां "/ * HTML नहीं होना चाहिए * /" वास्तव में "<! - HTML यहाँ ->" होना चाहिए? ;)
जेरेमी लोगान

पहली पोस्ट पर हाँ आप सही हैं। मैं कोड हाहा में फंस गया था। धन्यवाद।
क्रिस बिएर

1
धन्यवाद, @ क्रिस बी। इससे मुझे मदद मिली। इकोस के साथ, यदि आप अपने HTML में दोहरे उद्धरण चिह्नों का उपयोग करना चाहते हैं, तो आपको एकल उद्धरण इकोस का उपयोग करना चाहिए जैसे: मैं वास्तव में इसे याद कर रहा था।
आयुष मिश्रा

1
उत्तर में यह पहला लिंक अब हटा दिया गया है :(
mcon

दरअसल, 5.4 से आगे उपलब्ध एकमात्र लघु टैग ही इको टैग हैं <?=$var?>। छोटे टैग हमेशा की तरह हतोत्साहित किए जाते हैं, और उन्हें हटा दिया जाता है ( <? doStuff() ?>)।
igorsantos07

65

इसे इस तरह आज़माएँ ( heredoc syntax):

$variable = <<<XYZ
<html>
<body>

</body>
</html>
XYZ;
echo $variable;

8
@MhdSyrwan सिर्फ यादृच्छिक वर्ण, आप यहाँ और अधिक पढ़ सकते हैं php.net/manual/en/…
lfx

1
विस्तृत करने के लिए परवाह? मैं PHP ब्रैकेट्स को खोलना या बंद करना नहीं देखता, लेकिन HTML और PHP दोनों, तो हुह? - लिंक काम करता है और इसका बेहतर जवाब देता है, लेकिन शायद यह उत्तर पाठ में होना चाहिए, टिप्पणियों में नहीं?
जुलिक्स

@ जूलिक्स के जरिये आपको PHP टैग्स को खोलना और ( निर्भर करना ) जोड़ना होगा । वह सिर्फ उदाहरण को छोटा बनाना चाहते थे।
फहमी

मैं समझ गया; किसी तरह मैं चूक गया यह heredocs सिंटैक्स था (यानी पूरा कोड php है)। मैं भ्रमित हो गया, चूंकि मैं उस समय PHP में नया था और वाक्यविन्यास को देखता था जैसे <?php $variable = "bla"; ?> <html> <body class="<?php echo $variable ?>"> </body> </html>--- तो मुझे लगा कि कोष्ठक का एक गुच्छा गायब था और अनिश्चित था कि वास्तव में वे कहां जाएंगे। यह हमेशा अजीब होता है जब मेरी थोड़ी पुरानी टिप्पणियों का जवाब मिलता है, क्योंकि मैं यह सब तब बहुत नया था।
जूलिक्स

30

आप नियंत्रण संरचनाओं के लिए वैकल्पिक सिंटैक्स वैकल्पिक सिंटैक्स का उपयोग कर सकते हैं और PHP से बाहर निकल सकते हैं:

<?php if ($something): ?>
    <some /> <tags /> <etc />
    <?=$shortButControversialWayOfPrintingAVariable ?>
    <?php /* A comment not visible in the HTML, but it is a bit of a pain to write */ ?>
<?php else: ?>
    <!-- else -->
<?php endif; ?>

@ जेरेमी: यह शायद सबसे अच्छा है, सबसे सीधा तरीका है कि आप कुछ और नहीं ढूंढ रहे हैं ... क्या आप कुछ और तलाश रहे हैं?
फ्रैंक वी।

1
हां, विशेष रूप से HTML के बीच में PHP टिप्पणियों का उपयोग करने की क्षमता, ऐसी टिप्पणियां जो गूंज नहीं पाएंगी।
TheFlash

15

मूल रूप से आप HTML को PHP टैग्स के बाहर कहीं भी रख सकते हैं। तर्क और प्रस्तुति को अलग करने के लिए, किसी भी डेटा को प्रदर्शित करने से पहले अपने सभी आवश्यक डेटा प्रोसेसिंग करना भी बहुत फायदेमंद है।

डेटा प्रदर्शन स्वयं उसी PHP फ़ाइल के निचले भाग में हो सकता है या आप एक अलग PHP फ़ाइल शामिल कर सकते हैं जिसमें अधिकतर HTML हो।

मैं इस कॉम्पैक्ट शैली को पसंद करता हूं:

<?php
    /* do your processing here */
?>

<html>
<head>
    <title><?=$title?></title>
</head>
<body>
    <?php foreach ( $something as $item ) : ?>
        <p><?=$item?></p>
    <?php endforeach; ?>
</body>
</html>

नोट: आपको अपने PHP सेटअप <?php echo $var; ?>के <?=$var?>आधार पर उपयोग करने की आवश्यकता हो सकती है ।


7

मैं इस शैली के लिए आंशिक हूँ:

  <html>
    <head>
<%    if (X)
      {
%>      <title>Definitely X</title>
<%    }
      else
      {
%>      <title>Totally not X</title>
<%    }
%>  </head>
  </html>

मैं एएसपी-शैली टैग का उपयोग करता हूं, हां। PHP और HTML का सम्मिश्रण मेरी आँखों के लिए सुपर पठनीय लगता है। चाल <%और %>मार्करों को सही पाने में है।


क्या एएसपी टैग PHP 4+ के साथ संगत हैं?
फलैश

4
हाँ, लेकिन जब वे अंतिम हो जाते हैं - वे PHP से हटाए जा रहे हैं (निश्चित नहीं कि कौन सा संस्करण ... यदि वे पहले से नहीं गए हैं)
ग्रेग

7

एक अन्य दृष्टिकोण HTML को एक अलग फ़ाइल में रखा गया है और इस मामले में एक प्लेसहोल्डर [[सामग्री]] के साथ बदलने के लिए क्षेत्र को चिह्नित करें। (आप str_replace के बजाय स्प्रिंट का भी उपयोग कर सकते हैं।)

$page = 'Hello, World!';
$content = file_get_contents('html/welcome.html');
$pagecontent = str_replace('[[content]]', $content, $page);
echo($pagecontent);

वैकल्पिक रूप से, आप बस एक बफर में कैप्चर की गई स्क्रीन पर सभी PHP सामान को आउटपुट कर सकते हैं, एचटीएमएल लिख सकते हैं, और पीएचपी आउटपुट को पेज में वापस डाल सकते हैं।

PHP को लिखना, उसे पकड़ना और फिर उसे फिर से लिखना अजीब लग सकता है, लेकिन इसका मतलब यह है कि आप सभी प्रकार के फ़ॉर्मेटिंग सामान ( हेरेडोक इत्यादि) कर सकते हैं, और इसे पृष्ठ के झंझट के बिना सही ढंग से आउटपुट का परीक्षण करें रास्ते में हो रही टेम्पलेट। ( जूमला सीएमएस इसे इस तरह से करता है, बीटीडब्ल्यू।)

अर्थात:

<?php
    ob_start();
    echo('Hello, World!');
    $php_output = ob_get_contents();
    ob_end_clean();
?>
<h1>My Template page says</h1>
<?php
    echo($php_output);
?>
<hr>
Template footer

2

बस PHP फ़ाइल में पाठ को निम्नानुसार प्रिंट फ़ंक्शन का उपयोग करें :

<?php

  print('
    <div class="wrap">

      <span class="textClass">TESTING</span>

    </div>
  ')
?>

2
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';

echo('Echo as HTML' . htmlspecialchars((string)$enter_string));

1

क्रिस बी के जवाब के अलावा , अगर आपको किसी echoभी तरह से उपयोग करने की आवश्यकता है , तब भी आप इसे सरल और संरचित रखना चाहते हैं और कोड को स्पैम से जोड़ना नहीं चाहते हैं <?php stuff; ?>, तो आप नीचे दिए गए सिंटैक्स का उपयोग कर सकते हैं।

उदाहरण के लिए आप एक गैलरी की छवियों को प्रदर्शित करना चाहते हैं:

foreach($images as $image)
{
    echo
    '<li>',
        '<a href="', site_url(), 'images/', $image['name'], '">',
            '<img ',
                'class="image" ',
                'title="', $image['title'], '" ',
                'src="', site_url(), 'images/thumbs/', $image['filename'], '" ',
                'alt="', $image['description'], '"',
            '>',
        '</a>',
    '</li>';
}

इको कई मापदंडों को लेता है ताकि अच्छे इंडेंटिंग के साथ यह बहुत अच्छा दिखे। echoसाथ ही मापदंडों के साथ उपयोग करना संगति से अधिक प्रभावी है।



1

इसे इस्तेमाल करे:

<?php
    echo <<<HTML

    Your HTML tags here

HTML;
?>

0

HTML को प्रतिध्वनित न करें।

यदि आप उपयोग करना चाहते हैं

<?php echo "<h1>  $title; </h1>"; ?>

आपको यह करना चाहिए:

<h1><?= $title;?></h1>

-1

यह मेरा इसे करने का तरीका है:

<?php if($contition == true){ ?>
         <input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
         <p>No input here </p>
<?php } ?>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.