2009-09-13 1 views
8

내 HTML 내에 파일이 포함 된 PHP 스크립트가 있습니다. 이 시점에서 코드는 두 개의 탭으로 들여 쓰기됩니다. 내가 뭘하고 싶은 PHP 스크립트는 각 줄에 두 개의 탭을 추가 할 수 있습니다.어떻게 PHP 스크립트를 포함 파일의 모든 줄에 탭을 추가 할 수 있습니까?

메인 페이지 : 예를 들면 다음과 같습니다이다

<body> 
    <div> 
     <?php include("test.inc"); ?> 
    </div> 
</body> 

그리고 "test.inc"

<p>This is a test</p> 
<div> 
    <p>This is a nested test</p> 
    <div> 
     <p>This is an more nested test</p> 
    </div> 
</div> 

내가 무엇을 얻을 :

<body> 
    <div> 
<p>This is a test</p> 
<div> 
    <p>This is a nested test</p> 
    <div> 
     <p>This is an more nested test</p> 
    </div> 
</div> 
    </div> 
</body> 

내가 원하는 것은 :

<body> 
    <div> 
    <p>This is a test</p> 
    <div> 
      <p>This is a nested test</p> 
      <div> 
       <p>This is an more nested test</p> 
      </div> 
     </div> 
    </div> 
</body> 

include 파일에 선행 탭을 추가 할 수 있다는 것을 알고 있습니다. 그러나 VS 문서를 서식을 때 제거합니다.

답변

6

test.inc 파일에서 브라우저로 보내기 전에 output buffering을 사용하여 PHP 스크립트의 모든 출력을 캡처 할 수 있습니다. 그런 다음이를 후 처리하여 원하는 탭을 추가하고 전송할 수 있습니다. 파일의 상단에, 마지막에

<?php 
    ob_start(); 
?> 

를 추가

<?php 
    $result = ob_get_contents(); 
    ob_end_clean(); 
    print str_replace("\t" . $result, "\n", "\n\t"); 
?> 

내가 반드시이 솔루션에 가입하지 않은 추가 - 그것은 메모리를 많이 할 수 있습니다, 당신의 출력에 따라, 그리고 것 include 파일이 작동 할 때 부분 결과를 클라이언트에 보내지 못하도록하십시오. 출력물을 다시 포맷하는 것이 더 좋을 수도 있고, 일들을 탭하는 (그리고 지속적인 HTML 출력을 위해 heredocs의 인쇄를 사용하는) 사용자 정의 "인쇄"래퍼 형태를 사용하는 것이 더 나을 수도 있습니다.

편집 : 사용 않는 str_replace, 코멘트

+2

+1 +1 마찬가지로, 나는 여분의 TAB을 추가 할 때 요점을 정말로 보지 못합니다. 그들은 단지 최종 결과에 어떤 방식 으로든 기여하지 않으며 단지 최종 렌더링 된 HTML에서 더 많은 공간을 차지합니다. –

+4

'preg_replace()'를 사용하지 마십시오. str_replace()는 충분합니다. – soulmerge

+4

당신이'echo str_replace ("\ n", "\ t \ n", "\ t". $ result)'를 의미한다고 생각하지만 여전히 저에게 도움이되었습니다. – William

0

가장 쉬운 해결책은 포함 파일에 선행 탭을 추가하는 것이지만 리터럴 탭을 사용하는 대신 \t 이스케이프 시퀀스를 사용하십시오.

1

에 의해 제안 내가 당신의 솔루션을 쉽게 할 수 있다고 생각하지 않습니다. 소스 코드를 클라이언트에 보내기 전에 HTML Tidy을 사용하여 소스 코드를 정리하는 것이 좋습니다. 인터넷에는 good tutorials가 있습니다.

+0

파일 상단의'ob_start ('ob_tidyhandler')'는 필요한 모든 것이어야합니다. 디버깅 할 때 사용하도록 설정하지 않는 것이 좋습니다. – soulmerge