আমি কীভাবে পিএইচপি তে এইচটিএমএল প্রতিধ্বনি করতে পারি?


122

আমি শর্তাধীন কোনও পৃষ্ঠা উত্পন্ন করতে এইচটিএমএল আউটপুট করতে চাই, তাই পিএইচপি 4+ এ এইচটিএমএল এর বহু লাইন স্নিপেটগুলি প্রতিধ্বনিত করার সবচেয়ে সহজ উপায় কী? স্মার্টের মতো টেম্পলেট ফ্রেমওয়ার্কটি ব্যবহার করার দরকার কি?

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 এইচটিএমএলে কাজ করে না। আমি অনুমান করি আপনি "ইকো" - এর অর্থ প্রতিধ্বনি করেছেন;
ওয়েশি জেং

ভাল প্র্যাকটিস আপনার লজিকটি ভিউ থেকে আলাদা করতে বলে (এমভিসির মতো)। টালিগের মতো মন্দিরটিগ ইঞ্জিনটি স্ক্রিপ্ট যুক্তি থেকে আপনার দৃষ্টি পৃথক করতে ব্যবহার করুন - twig.sensiolabs.org আপনার এইচটিএমএল মার্কআপটি আপনার পিএইচপি স্ক্রিপ্টে প্রয়োগের জন্য এটি অন্যভাবে রাউন্ড করুন do ডাবল মন্দিরে পিএইচপি ভেরিয়েবল প্রয়োগ করুন। যত তাড়াতাড়ি আপনি আমার অর্থ কী তাড়াতাড়ি আপনি এই আনুষঙ্গিক সুবিধাগুলি দেখতে পাবেন। এই জাতীয় সমস্যা সমাধান করুন। কোডের ছোট চ্যাঙ্কের জন্য আপনি নিজের দ্বিগুণ প্রসারটি লিখতে পারেন যা আপনি পরে কিছু জটিল তবে পুনরাবৃত্তিমূলক কার্য সম্পাদন করতে সেকেন্ডে ব্যবহার করতে পারেন।
DevWL

উত্তর:


269

পিএইচপিতে HTML প্রতিধ্বনি করার কয়েকটি উপায় রয়েছে।

1. পিএইচপি ট্যাগের মধ্যে

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

2. একটি প্রতিধ্বনীতে

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

ইকোস সহ, আপনি যদি আপনার এইচটিএমএলে ডাবল উদ্ধৃতি ব্যবহার করতে চান তবে আপনাকে অবশ্যই একক উদ্ধৃতি ইকোস ব্যবহার করতে হবে:

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

অথবা আপনি তাদের মতো এড়াতে পারেন:

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

৩.হিরডোকস

৪. নওডোকস (পিএইচপি ৫.৩.০ ​​অনুসারে)

টেমপ্লেট ইঞ্জিনগুলি পিএইচপি ব্যবহার করার জন্য ডকুমেন্টগুলিতে ব্যবহৃত হয় যা বেশিরভাগ এইচটিএমএল থাকে। প্রকৃতপক্ষে, পিএইচপি-র আসল উদ্দেশ্যটি ছিল একটি ছদ্মবেশী ভাষা। এই কারণেই পিএইচপি দিয়ে আপনি শর্ট ট্যাগের মতো জিনিসগুলি ভেরিয়েবল (যেমন <?=$someVariable?>) প্রতিধ্বনিত করতে ব্যবহার করতে পারেন ।

অন্যান্য টেম্পলেট ইঞ্জিন রয়েছে (যেমন স্মার্ট, টুইগ ইত্যাদি) যা সিনট্যাক্সটিকে আরও সংক্ষিপ্ত করে তোলে (যেমন {{someVariable}})।

টেম্পলেট ইঞ্জিন ব্যবহারের প্রাথমিক সুবিধা হ'ল নকশা ( উপস্থাপনা যুক্তি ) কোডিং ( ব্যবসায়িক যুক্তি ) থেকে পৃথক করে রাখা । এটি কোড ক্লিনার এবং দীর্ঘমেয়াদে বজায় রাখা সহজ করে তোলে।

আপনার যদি আরও প্রশ্ন থাকে তবে নির্দ্বিধায় কোনও মন্তব্য করুন।

পিএইচপি ডকুমেন্টেশনে এই বিষয়গুলিতে আরও পড়ার ব্যবস্থা রয়েছে ।


দ্রষ্টব্য: পিএইচপি সংক্ষিপ্ত ট্যাগগুলি <?এবং ?>নিরুৎসাহিত করা হয়েছে কারণ এগুলি কেবলমাত্র short_open_tagphp.ini কনফিগারেশন ফাইল নির্দেশের সাথে সক্ষম থাকলে বা পিএইচপি --enable-short-tagsবিকল্পের সাথে কনফিগার করা থাকলে পাওয়া যায় । তারা 5.4 এর পরে সেটিংস নির্বিশেষে উপলব্ধ


7
"/ * এইচটিএমএল এখানে * /" সত্যিই "<! - HTML এখানে ->" হওয়া উচিত নয়? ;)
জেরেমি লোগান

হ্যাঁ প্রথম পোস্টে আপনি সঠিক। আমি কোড haha ​​ধরা ছিল। ধন্যবাদ.
ক্রিস বিয়ার

1
ধন্যবাদ, @ ক্রিস বি। এটি আমাকে সাহায্য করেছিল। ইকোস সহ, আপনি যদি আপনার এইচটিএমএলে ডাবল উদ্ধৃতি ব্যবহার করতে চান তবে আপনাকে অবশ্যই একক উদ্ধৃতি ইকোস ব্যবহার করতে হবে: আমি আসলে এটি অনুপস্থিত ছিল।
আয়ুষ মিশ্র

1
উত্তরের এই প্রথম লিঙ্কটি এখন সরানো হয়েছে :(
ম্যাকন

প্রকৃতপক্ষে, 5.4 এর পরে পাওয়া একমাত্র শর্ট ট্যাগগুলি হ'ল সংক্ষিপ্ত প্রতিধ্বনি ট্যাগ <?=$var?>। সংক্ষিপ্ত ট্যাগগুলি যথারীতি নিরুৎসাহিত করা হয় এবং এগুলি অপসারণ করা হয় ( <? doStuff() ?>)।
igorsantos07

65

এটি ( হেরডোক সিনট্যাক্স) এর মতো করে দেখুন:

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

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

8
@ এমএইচডি সিরওয়ান কেবল এলোমেলো চর, আপনি এখানে আরও পড়তে পারেন php.net/manual/en/…
lfx

1
বিশদ যত্ন? আমি খোলার বা পিএইচপি বন্ধনীগুলি দেখতে পাচ্ছি না, তবে এইচটিএমএল এবং পিএইচপি উভয়ই তাই না? - লিঙ্কটি আরও ভালভাবে কাজ করে এবং উত্তর দেয়, তবে সম্ভবত এটি উত্তর লেখায় থাকা উচিত, মন্তব্যগুলিতে নয়?
জুলিক্স

@ জুলিক্স অবশ্যই আপনার খোলার যোগ করতে হবে এবং ( নির্ভর করে ) পিএইচপি ট্যাগ বন্ধ করতে হবে। তিনি কেবল উদাহরণটি সংক্ষিপ্ত করতে চেয়েছিলেন।
ফাহমি

আমি বুঝতে পেরেছি; একরকম আমি মিস করেছি এটি হেরডোকস সিনট্যাক্স (অর্থাত্ পুরো কোডটি পিএইচপি)। আমি বিভ্রান্ত হয়ে পড়েছিলাম, যেহেতু আমি তখন পিএইচপি-তে নতুন ছিলাম এবং সিনট্যাক্সের মতো <?php $variable = "bla"; ?> <html> <body class="<?php echo $variable ?>"> </body> </html>অভ্যাস দেখতে পেয়েছিলাম --- তাই আমি ভেবেছিলাম যে একটি গুচ্ছ বন্ধনী অনুপস্থিত ছিল এবং তারা ঠিক কোথায় যাবে তা নিয়ে আমি নিশ্চিত নই। আমার সামান্য পুরানো মন্তব্যগুলির উত্তর পাওয়া গেলে এটি সর্বদা মজার, যেহেতু আমি তখনও এটির জন্য খুব নতুন ছিলাম।
জুলিক্স

30

আপনি নিয়ন্ত্রণ কাঠামোর জন্য বিকল্প সিনট্যাক্স বিকল্প বাক্য গঠন ব্যবহার করতে পারেন এবং পিএইচপি থেকে বিরতিতে:

<?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
হ্যাঁ, বিশেষত এইচটিএমএল এর মধ্যে পিএইচপি মন্তব্যগুলি ব্যবহার করার ক্ষমতা, এমন মন্তব্যগুলি প্রতিধ্বনিত হবে না।
TheFlash

15

মূলত আপনি পিএইচপি ট্যাগের বাইরে যে কোনও জায়গায় এইচটিএমএল রাখতে পারেন। যুক্তি এবং উপস্থাপনা পৃথক করার জন্য কোনও ডেটা প্রদর্শন করার আগে আপনার প্রয়োজনীয় সমস্ত ডেটা প্রসেসিং করা খুব উপকারী।

ডেটা প্রদর্শন নিজেই একই পিএইচপি ফাইলের নীচে হতে পারে বা আপনি বেশিরভাগ এইচটিএমএল সমন্বিত একটি পৃথক পিএইচপি ফাইল অন্তর্ভুক্ত করতে পারেন।

আমি এই কমপ্যাক্ট শৈলী পছন্দ:

<?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 echo $var; ?>পরিবর্তে <?=$var?>আপনার পিএইচপি সেটআপ উপর নির্ভর করে।


7

আমি এই শৈলীতে আংশিক:

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

আমি এএসপি-স্টাইল ট্যাগ ব্যবহার করি, হ্যাঁ। পিএইচপি এবং এইচটিএমএল এর মিশ্রণটি আমার চোখে সুপার-পঠনযোগ্য বলে মনে হচ্ছে। কৌশলটি সঠিকভাবে <%এবং %>মার্কারকে পাওয়ার জন্য ।


এএসপি ট্যাগগুলি কি পিএইচপি 4+ এর সাথে সামঞ্জস্যপূর্ণ?
TheFlash

4
হ্যাঁ তবে শেষ হওয়ার সময় এগুলি পান - তাদের পিএইচপি থেকে সরিয়ে দেওয়া হচ্ছে (কোন সংস্করণ ... তারা যদি ইতিমধ্যে না চলে যায় তবে নিশ্চিত নয়)
গ্রেগ

7

অন্য পদ্ধতির একটি পৃথক ফাইলে এইচটিএমএল স্থাপন করা হয়েছে এবং এক্ষেত্রে স্থানধারক [[বিষয়বস্তু]] এর সাথে স্থান পরিবর্তন করতে অঞ্চল চিহ্নিত করুন। (আপনি স্ট্রিংফের পরিবর্তে স্প্রিন্টফ ব্যবহার করতে পারেন))

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

বিকল্পভাবে, আপনি কেবলমাত্র সমস্ত পিএইচপি স্টাফ বাফারে বন্দী স্ক্রিনে আউটপুট করতে পারেন, এইচটিএমএল লিখতে পারেন এবং পিএইচপি আউটপুটটিকে পৃষ্ঠায় ফিরিয়ে রাখতে পারেন।

পিএইচপি লিখতে, আটকানো এবং আবার লিখতে এটি আশ্চর্যজনক বলে মনে হতে পারে তবে এর অর্থ এই নয় যে আপনি সমস্ত ধরণের ফর্ম্যাটিং স্টাফ ( হেরেডোক ইত্যাদি) করতে পারেন এবং পৃষ্ঠার ঝামেলা ছাড়াই এটি সঠিকভাবে পরীক্ষা করতে পারেন it টেমপ্লেট পেতে হচ্ছে। ( জুমলা সিএমএস এটি করে, বিটিডাব্লু।)

অর্থাৎ,

<?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

  print('
    <div class="wrap">

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

    </div>
  ')
?>


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পরামিতিগুলির সাথে ব্যবহার করা যুক্তিযুক্তকরণের চেয়ে কার্যকর।




0

এইচটিএমএল প্রতিধ্বনি করবেন না।

আপনি যদি ব্যবহার করতে চান

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

আপনার এটি করা উচিত:

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.