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


193

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

<?php 
    </script>
?>

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

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

<?php 
    </div>
?>

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

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


그냥 궁금해서 무엇을 달성하려고했거나 실험하고 있었습니까?
asprin

8
실제로 지난 밤에 PHP 종료 태그를 놓쳤습니다.이 후 </ script> 태그가 있었고이 오류가없는 이유를 알아 내기 위해 30 분 이상을 보냈지 만 여전히 출력이 원하는 것은 아닙니다. .
Irfan

7
나는 더 이상이 행성에서 살고 싶지 않습니다.
Kzqai

2
PHP는 사람들에게 그렇게합니다.
xiankai

답변:


273

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

31
사용 <script language="php">하지 않는 것이 좋습니다.
John Dvorak

4
short_open_tag지시 사항에 약간의 변화가 있음을 기억했기 때문에 빠른 참고 사항 . PHP 5.4에서 <?=짧게는 <?php echo더 이상 필요하지 않습니다 short_open_tag. <?=사용 가능한 시스템 과 사용 불가능한 시스템 간을 이동하면 항상 실망했습니다. php.net/manual/en/ini.core.php#ini.short-open-tag
Chris

1
공식 문서가 권장하는 @thatmiddleway 참고 <?php ... ?>:뿐만 아니라 php.net/manual/en/language.basic-syntax.phpmode.php
존 드보락

37

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

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

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.