2011-09-09 2 views
2

다음과 같은 몇 가지 PHP 코드가 있습니다 (단순화 된) :출력 들여 쓰기를 유지하려면 어떻게합니까?

<ul> 
    <?php 
     for ($Index = 1; $Index <= 10; $Index++) 
     { 
      echo("<li>" . $Index . "</li>\n"); 
     } 
    ?> 
</ul> 

문제는 첫 번째 이후 모든 줄에 출력이 들여 쓰기가없는 것입니다. 내 코드를 깔끔하게 유지하고 싶습니다. 그래서 모든 <li> 요소를 올바르게 정렬하고 싶습니다.

\t로 각 요소 앞에 탭 출력을 시도했지만 첫 번째 줄이 의도 한 것보다 많이 들여 쓰기되었습니다. 뒤에 탭 을 출력하면 요소가 후행 </ul>의 배치가 엉망이된다는 의미입니다.

\r가 전혀 작동하지 않습니다.

출력 형식을 올바르게 유지하기위한 트릭이 있습니까? 아니면 지저분한 코드와 함께 살아야합니까?

+0

공백을 사용하십시오. ""* 8, 16, 20, etc. ... – chown

+0

관심이 없어서 왜이 작업을 수행해야합니까? 그것은 여전히 ​​브라우저에 의해 올바르게 해석 될 것이고, 그렇지 않다면 여분의 몇 바이트의 대역폭을 절약 할 것입니다 .-) – Bojangles

+0

@JamWaffles 저는 엄격하게 * 필요하지 않습니다. 그러나 가능하다면, HTML 출력을 가능한 한 깔끔하고 깔끔하게 유지하고 싶습니다. – Maxpm

답변

2

그것은 직접 출력,

<?php 

그 공백은 PHP 태그 밖에 이후 : 첫 번째 라인은 당신이 때문에이 라인의 시작 부분에 여분의 공백이 될하고자하는 것보다 더 들여이다. 그러나 PHP 태그 외부에 있기 때문에 루프에 포함되지 않으며 첫 번째 행에만 영향을 미칩니다.

<ul> 
<?php 
    for ($Index = 1; $Index <= 10; $Index++) { 
    echo "\n <li>$Index</li>"; 
    } 
?> 
</ul> 

을 ... 그리고 라인의 시작 부분에 <?php ?> 태그를 정렬하거나 당신이 할 수 있습니다 : :

당신은 그것을 방지하기 위해이 작업을 수행 할 수

<ul><?php for ($Index = 1; $Index <= 10; $Index++) { ?> 
    <li><?php echo $Index; ?></li> 
<?php } ?></ul> 

을 .. 나누었다는이 같은 말도 보인다 :

<ul><?php for ($Index = 1; $Index <= 10; $Index++) echo "\n <li>$Index</li>"; ?> 
</ul> 

... 뭐를 acheive하는 가장 좋은 방법은 아마도 (예를 들어 PHP 4.3.10에서 적어도 PHP 5에서는 존재하지 않는 ?> 태그 뒤에 암시 적으로 줄 바꿈이 있습니다 (예 : 다른 PHP 버전이 약간 다르게 처리하는 것처럼 보입니다. 나는 이것이 버그일지도 모른다고 생각한다.) 이것이 내가 혼합 HTML과 PHP를 사용하지 않는 이유 중 하나입니다. (비록 많은 사람들이이 점에 대해 나와 의견이 다를지라도) 내가하는 일은 다음과 같습니다.

<?php 

    $out = "<ul>\n"; 
    for ($Index = 1; $Index <= 10; $Index++) $out .= " <li>$Index</li>\n"; 
    $out .= "</ul>"; 
    echo $out; 

?> 
0

공백을 사용하십시오. ""* 8, 16, 20, 등 ... 여전히

아니면 PHP에서 \t를 사용 후 맨 끝에 공백 \t를 교체 한 후 그것을 모두 밖으로 에코

echo preg_replace('/^\t/', '4_SPACES_HERE', $output_html);