[php] PHP에서 </ script>가 구문 분석 오류를 표시하지 않는 이유는 무엇입니까?

다음 PHP 코드를 실행했습니다 .

<?php
    </script>
?>

구문 분석 오류가없고 출력은?>“( )입니다.

비슷한 경우 구문 분석 오류가 발생합니다.

<?php
    </div>
?>

구문 분석 오류 : 구문 오류, 예기치 않은 ‘<‘

<?php </script> ?>같은 오류가 발생 하지 않습니까?



답변

PHP 코드 블록을 시작하는 다양한 방법이 있기 때문입니다 .

  • <? ... ?>(로 알려진 short_open_tag)

  • <?php ... ?> (정말 표준)

  • <script language="php"> ... </script> (권장하지 않음)

  • <% ... %> (5.3.0 이후에는 더 이상 사용되지 않고 ASP 스타일 태그가 제거됨)

분명히, 당신은 한 가지 방법으로 PHP 블록을 열고 다른 하나를 닫을 수 있습니다. 몰랐어요

따라서 코드에서을 사용하여 블록을 열었 <?지만 PHP </script>는 더 가까운 것으로 인식 합니다. 일어난 일은 :

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


답변

PHP에서는 script태그를 사용하여 PHP 블록을 열 수 있습니다 .

그래서 당신은 사용할 수 있습니다

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

따라서 귀하의 예에서는 일반 열린 태그 ( <?php)와 닫기 태그 ()를 혼합했습니다 </script>. 따라서 파서는 닫는 스크립트 태그 뒤의 모든 텍스트가 보통이라고 가정합니다 HTML.

HTML 에서 이스케이프에 대해 자세히 알아보십시오 .


답변