2012-01-15 1 views
2

필자는 PHP 프로세서로 인해 이상한 것처럼 보였습니다. PHP 매뉴얼에 따르면 :이스케이프 처리되지 않은 달러 기호로 인해 오류가 발생하지 않습니다. PHP는 가장자리 처리?

PHP의 변수는 변수의 이름이 인 달러 기호로 표시됩니다. 변수 이름은 대소 문자를 구분합니다.

변수 이름은 PHP의 다른 레이블과 동일한 규칙을 따릅니다. 유효한 변수 이름은 문자 또는 밑줄로 시작하며 그 뒤에 숫자 자, 숫자 또는 밑줄이옵니다.

내가 본 에지 경우 즉시 달러 기호 후 문자가 같은으로, 문자 나 밑줄 (또는 특별한 의미를 호출 할 다른 메타 문자 조합하지 않은 경우입니다 두 번째 달러 기호). 다음은 예입니다 :

$someVariable = "This is a $(test of our edge case)."; 

I 출력 할 수 echo 문이 변수 및 테스트가 문제없이 나타 단어 앞에 달러 기호 (탈출이 필요 없었다). 내가 말할 수있는 한 PHP는 오류 또는 경고를 throw하지 않습니다. 이제 제 질문에 대한 답입니다. 프로세서 문법의 가장 중요한 사례입니까? 그게 버그 야? 아니면 제가 간과하고있는 다른 해석이 있습니까?

저는 좋은 프로그래밍 방법으로, 문자를 인쇄하기를 원하면 큰 따옴표로 묶은 문자열에서 달러 기호를 이스케이프해야한다는 것을 잘 알고 있습니다 (또는 작은 따옴표로 묶은 문자열을 단순히 사용할 수도 있음). 나는 왜이 사건이 반드시 달러 기호 앞에 탈출을 요구하지 않았는지 궁금했다.

답변

3

아니요, 오류 메시지가없는 오류는 없습니다. PHP는 큰 따옴표로 둘러싼 문자열 내에서만 유효한 변수를 확장합니다.

\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* 
+0

그래서 내가 이중 인용에 달러 기호를 탈출 추측 : 당신이 정규 표현식에 익숙하다면 PHP는 다음과 같은 식으로 이중 인용 된 문자열의 내용을 일치 될 때

, 당신은 생각할 수 있습니다 문자열은 반드시 ** 항상 ** 필수 ** 올바른 것은 아닙니다 (모범 사례 일지라도 계속 수행 할 것입니다). –

+0

@JonahBishop : 맞습니다. 계속 그렇게하는 것이 일관성을 유지하는 데 도움이됩니다. –

관련 문제