2011-01-29 3 views
0

내가 두 변수가있는 경우 :"일부 텍스트"와 "일부 텍스트"를 구별하는 방법은 무엇입니까?

$v1 = "some text"; 
$v2 = 'some test'; 

는 작은 따옴표와 어느 따옴표를 사용하여 사용하여 정의 된 문자열 변수를 인식 할 수 있습니까?

+4

호기심에서 벗어나, 그렇게해야 할 이유가 있습니까? – templatetypedef

+0

PHP가 이러한 문자열을 인식하기 때문입니다. string에 작은 따옴표가 있으면 변수를 구문 분석하지 않습니다. – user594791

+1

그래서 뭐. 변수 대체가 범위를 벗어났습니다. 템플릿을 사용하려면 템플릿을 사용하십시오. –

답변

4

아니요. 신경 써야합니다.

1

아니요, 그렇게 할 방법이 없습니다. 일단 문자열이 지정되면 완료됩니다. 나중에 확인할 수 없습니다.


그러나 실제로 정말로 원하는 경우 문자열 할당 방법을 저장하는 배열을 가질 수 있지만 배열을 직접 업데이트해야합니다. 이와 같이 :

$v1 = "some text"; 
$info['v1'] = true; 
$v2 = 'some test'; 
$info['v2'] = false; 

여기에서 나중에 $ info 배열의 값을 확인할 수 있습니다. 그것이 사실이라면, 당신은 큰 따옴표, 그렇지 않으면 작은 따옴표로 나타냅니다. 그러나, 내가 이해할 수있는이 물건의 실용적인 사용법은 없습니다. 그것은 전혀 쓸모가 없습니다.

1

이렇게 할 방법이 없으므로 시도하고 알아내는 것이 좋습니다.

파일 또는 사용자 입력에서 읽은 문자열은 어떻게됩니까? 작은 따옴표로 묶인 문자열에 큰 따옴표 붙은 문자열을 추가하면 어떨까요? 어떤 인용 스타일이 결과가 나겠습니까? 어떤 종류의 따옴표가 문자열에 캐스트 될 때 정수를 둘러 쌉니까?

1

음 :하지만 리터럴 해석하는 방법에 약간의 차이가 있습니다. 런타임 분석이 불가능한 통계 분석을 통해이를 찾아내는 것이라면 Tokenizer을 사용하고 파일의 토큰 스트림을 분석하여 T_VARIABLE'"' 또는 T_CONSTANT_ENCAPSED_STRING이 할당되어 있는지 확인해야합니다. 전자는 변수가 보간 될 경우 후자, 그렇지 않으면 후자가됩니다. "'을 구별하려면 보간/보간하지 말고 T_CONSTANT_ENCAPSED_STRING의 첫 번째 문자를 '"으로 확인해야합니다.

비록 내가 확신하지만 아무도 인터뷰에서 이것을 알고 싶지 않았습니다. Tokenizer는 실제로 매우 높기 때문에 누군가가 거의 알지 못한다면 표준 인터뷰에 포함되지 않을 것입니다.)

관련 문제