PHP में, </ script> पार्स त्रुटि क्यों नहीं दिखाता है?


193

मैं निम्नलिखित PHP कोड चला रहा था :

<?php 
    </script>
?>

कोई पार्स त्रुटियां नहीं थीं और आउटपुट " ?>" ( उदाहरण ) था।

इसी तरह के मामलों में मुझे एक पार्स त्रुटि मिलती है:

<?php 
    </div>
?>

पार्स त्रुटि: सिंटैक्स त्रुटि, अप्रत्याशित '<' में ...

<?php </script> ?>एक ही त्रुटि क्यों नहीं देता है?


बस उत्सुक। क्या हासिल करने की कोशिश कर रहे थे या वह क्या था जिस पर आप प्रयोग कर रहे थे?
asprin

8
वास्तव में मामला अलग था कल रात मैं php क्लोजिंग टैग से चूक गया था। और इसके बाद मेरे पास एक </ script> टैग था और मैंने यह पता लगाने के लिए 30 से अधिक मिनट बिताए कि इसमें कोई त्रुटि क्यों नहीं है लेकिन फिर भी आउटपुट इच्छा के अनुसार नहीं है। ।
इरफान

7
मैं इस ग्रह पर और नहीं रहना चाहता।
कज़कई

2
PHP लोगों को ऐसा करता है।
xiankai

जवाबों:


273

ऐसा इसलिए होना चाहिए क्योंकि PHP कोड का ब्लॉक शुरू करने के विभिन्न तरीके हैं :

  • <? ... ?>(के रूप में जाना जाता है short_open_tag)

  • <?php ... ?> (मानक वास्तव में)

  • <script language="php"> ... </script> (सिफारिश नहीं की गई)

  • <% ... %> (5.3.0 के बाद एएसपी-शैली टैग हटा दिया गया और हटा दिया गया)

जाहिरा तौर पर, आप एक तरह से एक PHP ब्लॉक खोल सकते हैं, और दूसरे को बंद कर सकते हैं। नहीं पता था कि

तो आपके कोड में, आपने ब्लॉक का उपयोग करके खोला <?लेकिन PHP </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
@thatmiddleway ध्यान दें कि आधिकारिक दस्तावेज की सिफारिश की गई <?php ... ?>और साथ ही: php.net/manual/en/language.basic-syntax.phpmode.php
जॉन ड्वोरक

37

PHP में, आप scriptPHP ब्लॉक को खोलने के लिए टैग का उपयोग कर सकते हैं ।

तो आप उपयोग कर सकते हैं

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

तो अपने उदाहरण में आप सामान्य खुला टैग मिश्रित, <?php, बंद टैग के साथ, </script>। इसलिए पार्सर मानता है कि समापन स्क्रिप्ट टैग के बाद सभी पाठ सामान्य हैं HTML

HTML से बचने में और पढ़ें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.