পিএইচপি-তে, কেন </script> পার্স ত্রুটি দেখায় না?


193

আমি নিম্নলিখিত পিএইচপি কোড চালাচ্ছি :

<?php 
    </script>
?>

কোনও পার্স ত্রুটি ছিল না এবং আউটপুটটি " ?>" ছিল ( উদাহরণস্বরূপ )।

অনুরূপ ক্ষেত্রে আমি একটি বিশ্লেষণ ত্রুটি পেতে পারি:

<?php 
    </div>
?>

পার্স ত্রুটি: সিনট্যাক্স ত্রুটি, অনাকাঙ্ক্ষিত '<' ইন ...

কেন <?php </script> ?>একই ত্রুটি দেয় না ?


উৎসুক. আপনি কী অর্জন করতে চাইছিলেন বা এটি কী ছিল যা আপনি পরীক্ষা করছেন?
asprin

8
প্রকৃতপক্ষে কেসটি আলাদা ছিল গত রাতে আমি পিএইচপি বন্ধ করার ট্যাগটি মিস করলাম nd এবং এর পরে আমার একটি </ translation> ট্যাগ ছিল এবং এটিতে কোনও ত্রুটি বাট নেই কেন তা নির্ধারণের জন্য আমি 30 মিনিটেরও বেশি সময় ব্যয় করেছি আউটপুটটি ইচ্ছা মতো নয় ।
ইরফান

7
আমি আর এই গ্রহে বাস করতে চাই না।
Kzqai

2
পিএইচপি লোকের কাছে তা করে।
xiankai

উত্তর:


273

এটি অবশ্যই হবে কারণ পিএইচপি কোডের একটি ব্লক শুরু করার বিভিন্ন উপায় রয়েছে :

  • <? ... ?>(হিসাবে পরিচিত short_open_tag)

  • <?php ... ?> (সত্যিই মান)

  • <script language="php"> ... </script> (প্রস্তাবিত নয়)

  • <% ... %> (5.3.0 এর পরে এএসপি-শৈলীর ট্যাগটিকে অবজ্ঞা ও অপসারণ করা হয়েছে)

স্পষ্টতই, আপনি একটি পিএইচপি ব্লকটি এক উপায়ে খুলতে পারেন এবং এটি অন্যভাবে বন্ধ করতে পারেন। তা জানতাম না।

সুতরাং আপনার কোডে, আপনি ব্যবহার করে ব্লকটি খোলেন <?তবে পিএইচপি </script>আরও কাছাকাছি হিসাবে স্বীকৃত । যা ঘটেছিল তা হ'ল:

<?php       <----- START PHP
</script>   <----- END PHP
?>          <----- JUST GARBAGE IN THE HTML

31
নোট করুন যে ব্যবহার <script language="php">করার পরামর্শ দেওয়া হয় না।
জন ডিভোরাক

4
দ্রুত নোট, কারণ আমি মনে করেছি যে short_open_tagনির্দেশের সাথে কিছু পরিবর্তন ছিল । পিএইচপি 5.4 <?=সংক্ষিপ্ত জন্য <?php echoআর প্রয়োজন হয় না short_open_tag। যেখানে <?=উপলব্ধ ছিল এবং উপলভ্য ছিল না এমন সিস্টেমে যেতে সর্বদা আমাকে হতাশ করে। php.net/manual/en/ini.core.php#ini.short-open-tag
ক্রিস

1
@ থমিটলওয়ে নোট করুন যে সরকারী দস্তাবেজটিও এটির জন্য সুপারিশ <?php ... ?>করেছে: php.net/manual/en/language.basic-syntax.phpmode.php
জন ডিভোরাক

37

পিএইচপি-তে, আপনি scriptএইচএইচপি ব্লকটি খুলতে ট্যাগটি ব্যবহার করতে পারেন ।

সুতরাং আপনি ব্যবহার করতে পারেন

<script language="php">
    echo 'hello world';
</script>

সুতরাং আপনার উদাহরণে আপনি <?phpক্লোজিং ট্যাগ সহ সাধারণ খোলা ট্যাগটি মিশ্রিত করেছেন </script>। সুতরাং পার্সার ধরে নিচ্ছে যে সমাপনী স্ক্রিপ্ট ট্যাগের পরে সমস্ত পাঠ্যই স্বাভাবিক HTML

এইচটিএমএল থেকে এসকেপিং এ আরও পড়ুন ।

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