http://www.12306.cn/mormhweb/k PHP 원리, 오류 억제 및 임베디드 HTML 분석에 대한 심층적인 이해

WBOY
풀어 주다: 2016-07-29 08:45:04
원래의
1191명이 탐색했습니다.

PHP는 오류 억제기 '@'를 제공합니다. 언제 사용해야 합니까?
이것은 지난 이틀 동안 일부 네티즌들이 언급한 일반적인 문제입니다.
PHP 파일에 포함된 HTML을 처리하는 방법
PHP에서는 태그 외부의 모든 문자가 어휘 분석 과정에서 T_INLINE_HTML 토큰으로 변환되고 구문 분석 중에 T_INLINE_HTML 토큰으로 변환됩니다. . 모든 T_INLIE_HTML에는 ZEND_ECHO 출력이 할당됩니다.
즉,

코드를 복사하세요 코드는 다음과 같습니다.


while($con) {
?>
laruence
}
?>
OPLINE이 생성됩니다: T_ECHO, 피연산자는 "laruence"입니다.

결과에 관한 한 위 코드는 실제로 다음 결과와 동일합니다.


코드 복사 코드는 다음과 같습니다.

while($con) {
echo "laruence"; >}
?>


하지만 한 가지 주의할 점은 PHP 태그 외부의 문자는 어휘 분석 과정에서 400자 단위로 나누어진다는 것입니다. 예:


코드 복사

코드는 다음과 같습니다.if(1) {

?> >laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence laruence 라루엔스 laruence laruence laruence laruence laruence 랑스 로랑스 로랑스 로랑스 로랑스 로랑스 로랑스 로랑스
}
?>


위 코드에서 레이블 외부에는 531개의 문자(공백 및 캐리지 리턴 포함)가 있으며 두 개로 나뉩니다. T_INLINE_HTML 출력.
오류 억제기
PHP에서 오류 억제기를 사용하여 오류 메시지를 표시할 수 있다는 것을 알고 있습니다.

구문 분석 과정에서



코드 복사

코드는 다음과 같습니다.@include('file')

?> ;



은 include 문 앞뒤에 두 개의 Opline(작업)을 삽입합니다. 이 두 작업은 별도로 수행됩니다.


코드 복사

코드는 다음과 같습니다. 1. 현재 error_reporting 값을 저장하고 error_reporting(0)을 설정합니다. //오류 출력을 닫습니다.2. 이전에 저장한 error_reporting 값을 복원합니다.


즉, 위 코드는 실제로는 다음 코드와 유사합니다.


코드 복사

코드는 다음과 같습니다. $old = error_reporting(0); include('file');

error_reporting($old);



또한 여담: " 적용할 수 있나요? 오류 억제는 어떻습니까?", 내 개인적인 제안은 이 문이 잘못되어 사용자에게 거의 영향을 미치지 않으면 오류가 무엇인지 신경 쓰지 않고 이를 처리하기 위한 추가 논리를 마련하지 않는다는 것입니다. 오류가 있는 경우 오류 억제를 사용할 수 있습니다. 그렇지 않으면 추가 논리를 사용하여 오류를 확인하십시오.
위 내용은 http://www.12306.cn/mormhweb/k의 내용을 포함하여 PHP 원리, 오류 억제 및 내장된 HTML 분석에 대한 심층적인 이해를 http://www.12306.cn/mormhweb/k 소개했습니다. . PHP 튜토리얼에 관심이 있는 분들에게 도움이 되기를 바랍니다.


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿