2012-11-05 17 views
189

aşağıdaki PHP kodu koşuyordu:PHP'de, neden</script> ayrıştırma hatası göstermiyor?

<?php 
    </script> 
?> 

Hiçbir ayrıştırma hataları vardı ve çıkış "?>" (example) idi.

<?php 
    </div> 
?> 

Parse error: syntax error, unexpected '<' in ...

Neden <?php </script> ?> aynı hatayı vermez: Ben incele hatayı yapmak benzer durumlarda

?

+0

Sadece merak ediyorum. Neyi başarmaya çalışıyordunuz, ya da neyi denediniz? – asprin

+8

Aslında durum dün gece farklıydı, php kapanış etiketini kaçırdım.Ve bundan sonra bir etiketim vardı ve bunun neden herhangi bir hataya sahip olmadığını anlamak için 30 dakikadan fazla harcadım ama çıkış hala arzu değil. – Irfan

+6

Artık bu gezegende yaşamak istemiyorum. – Kzqai

cevap

270

bu olmalı there are various ways of starting a block of PHP code çünkü:

  • <? ... ?> (short_open_tag olarak bilinen)

  • <?php ... ?> (gerçekten standart) (önerilmez)

  • <script language="php"> ... </script>

  • <% ... %> (5.3.0 sonra kaldırılmış ve ASP tarzı etiketi çıkarılmış)

Görünüşe göre, bir PHP kod bloğunu bir yolunu açmak ve ona başka kapatabilirsiniz. Bunu bilmiyordum.

Kodunuzda, <?'u kullanarak bloğu açtınız, ancak PHP daha yakın olarak </script>'u tanır. Olanlar:

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

'

36

PHP, bir PHP bloğunu açmak için script etiketi kullanabilirsiniz.

Yani

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

Yani örnekte kapanış etiketinden, </script> ile normal açık etiketi, <?php karışık kullanabilirsiniz. Böylece ayrıştırıcı, kapanış komut dosyası etiketinin tamamından sonra tüm metnin normal olduğunu HTML kabul eder.

Escaping from HTML.

İlgili konular