2010-11-28 4 views
1
<?php echo ($i % 6 == 5) ? 'style=\"margin-right:0px\"' : ''; ?> 

보기 포트에 style = ""이 인쇄되었습니다.PHP 기본 연결 문제?

업데이트 : 문자열 안에있을 때 왜 큰 따옴표를 이스케이프 할 필요가 없습니까? 큰 따옴표는 작은 따옴표 안에 있으면 문자열로 간주되지 않으므로? 사전에

감사합니다, MEM은

+0

더 많은 코드를 볼 수 있습니까? 백 슬래시는 중요하지 않습니다. 슬래시가있는 경우에도 style = \ "margin-right : 0px \"가 아닌 style = ""을보아야합니다. – typeoneerror

+0

우연히 할 수 있겠습니까? style = "" – typeoneerror

+0

어디를보고있는가? 결과? 원시 산출물? 브라우저? 브라우저의 DOM 관리자? – deceze

답변

3

문자열 안에있을 때 왜 큰 따옴표를 이스케이프 할 필요가 없습니까? 작은 따옴표 안에 있으면 큰 따옴표를 다른 문자열로 사용하지 않으므로 문자열을 사용하지 않으므로?

manual

에 관한 단일 인용 문자열 :

가 (\), 리터럴 따옴표를 지정 백 슬래시로 이스케이프합니다. 리터럴 백 슬래시를 지정하려면 두 번 (\\)을 사용합니다. 다른 모든 백 슬래시 인스턴스는 리터럴 백 슬래시으로 처리됩니다. 즉, \ r 또는 \ n과 같은 다른 이스케이프 시퀀스가 ​​특별한 의미가 아닌 지정된대로 출력됩니다.

+1

맞아, style = \ "margin-right : 0px \"가 아닌 style = ""을 출력하므로, 이것은 그의 문제가 아닙니다. – typeoneerror

+0

@Typeoneerror, 예, 첫 번째 질문에 대해서는 대답하지 않습니다. [글쎄, 실제로는 첫 번째 질문이 없습니다]. – Matthew

+2

브라우저에서 (보기 소스를 통해조차도) 브라우저에서 xml/html 파서가 필터링되어 'style = \ "margin-right : 0px \"'에 잘못된 속성 값을 버리는 것으로 의심됩니다. 'style = ""'만을 남겨 둡니다. – Lee

2

당신은 문자열이 불필요 안에 이렇게 큰 따옴표를 "을 탈출, 그 문자열을 작은 따옴표를 '을 사용했다. 이것을 'style="margin-right:0px"'으로 바꾸면 잘 작동합니다.

PHP가 문자열과 따옴표를 어떻게 처리하는지 설명하려면 '"의 차이점을 알아두면 도움이됩니다. '으로 캡슐화 된 문자열은 항상있는 그대로 표시됩니다. 문자열 내 아무 것도 이스케이프 문자 (예 : \n 개행 또는 이스케이프 된 따옴표는 이스케이프 된 작은 따옴표 \' 제외)을 포함하여 파싱되지 않습니다. 반대로 "에 캡슐화 된 문자열이 파싱되므로 이스케이프 문자가 있으면 올바르게 표시되고 문자열에 변수가 있으면 입력됩니다. PHP 아무것도 탈출 문자열을 검색 할 필요가 없습니다 때문에 예를 들어,

// Set name variable to my name 
$name = "nhinkle"; 

// Echo hello name with single quotes 
echo 'hello {$name}'; 
// The result will be "hello {$name}" 

// Echo hello name with double quotes 
echo "hello {$name}"; 
// The result will be "hello nhinkle" 

그것은 단지 문자열의 끝을 찾을 필요가, 작은 따옴표를 사용하는 처리 능력이 덜 걸립니다. 그러나 문자열 내부의 내용을 구문 분석해야하는 경우 큰 따옴표를 사용해야합니다.

+0

@nhinkie - 감사합니다. 그것은 내가 오랫동안 그리워했던 아주 명백한 설명이었습니다. 건배! ;) – MEM

2

작은 따옴표 안에 큰 따옴표를 이스케이프 처리 할 필요가 없습니다.

<?php echo ($i % 6 == 5) ? 'style="margin-right:0px"' : ''; ?> 

는 당신은 작은 따옴표 또는 큰 따옴표 안에 큰 따옴표 안에 작은 따옴표를 이스케이프해야합니다. 작은 따옴표로 묶은 문자열에 작은 따옴표를 쓰려면 그 작은 따옴표로 문자열을 끝내십시오.

$foo = 'a'b'; 

PHP는 의미 b 및 종료되지 않습니다 문자열 ';의 시작 다음에 문자열 a으로이 문제를보고; 잘못된 구문입니다.

$foo = 'a\'b'; 

올바르게 문자열 a'b로 분석된다. 의 의미를 이스케이프했습니다. 견적은 일반적으로이 시점에 있습니다.

작은 따옴표 안에 큰 따옴표를 사용하면 이러한 모호성이 없습니다. 작은 따옴표로 묶인 문자열 내의 큰 따옴표는 문자열을 종료하지 않으며 이스케이프해야하는 특별한 의미가 없습니다. 백 슬래시를 포함하면 백 슬래시가 그대로 사용됩니다.

$foo = 'a"b'; // a"b 
$foo = 'a\"b'; // a\"b 

출력을 보는 방법이 문제라고 생각합니다. 출력이 style=\"…\"이면 이스케이프 된 큰 따옴표로 인해 출력을보고있는 환경에서 잘못된 구문이 발생할 수 있습니다.

+0

downvote에 대한 칭의는 제발, 제발? – deceze

+0

누군가 내 비슷한 대답을 downvoted. 이유를 모르겠다. 귀하의 편집 후, 나는 당신의 대답이 꽤 좋은 것 같아요. +1, 적어도 당신은 지금도 그렇습니다. 설명은 좋을 것이다. – nhinkle