[php] PHP에서 HTML을 어떻게 에코 할 수 있습니까?

페이지를 생성하기 위해 조건부로 HTML을 출력하고 싶은데, PHP 4+에서 HTML의 여러 줄 조각을 에코하는 가장 쉬운 방법은 무엇입니까? Smarty와 같은 템플릿 프레임 워크를 사용해야합니까?

echo '<html>', "\n"; // I'm sure there's a better way!
echo '<head>', "\n";
echo '</head>', "\n";
echo '<body>', "\n";
echo '</body>', "\n";
echo '</html>', "\n";



답변

PHP에서 HTML을 에코하는 몇 가지 방법이 있습니다.

1. PHP 태그 사이

<?php if(condition){ ?>
     <!-- HTML here -->
<?php } ?>

2. 메아리 속에서

if(condition){
     echo "HTML here";
}

에코를 사용하면 HTML에서 큰 따옴표를 사용하려면 다음과 같이 작은 따옴표 에코를 사용해야합니다.

echo '<input type="text">';

또는 다음과 같이 이스케이프 할 수 있습니다.

echo "<input type=\"text\">";

3. Heredocs

4. Nowdocs (PHP 5.3.0 기준)

템플릿 엔진 은 대부분 HTML이 포함 된 문서에서 PHP를 사용하는 데 사용됩니다. 사실 PHP의 원래 목적은 템플릿 언어였습니다. 이것이 PHP에서 짧은 태그와 같은 것을 사용하여 변수를 에코 할 수있는 이유입니다 (예 🙂 <?=$someVariable?>.

구문을 더욱 간결하게 만드는 다른 템플릿 엔진 (예 : Smarty, Twig 등)이 있습니다 (예 🙂 {{someVariable}}.

템플릿 엔진 사용의 주요 이점은 디자인 ( 프레젠테이션 로직 )을 코딩 ( 비즈니스 로직 ) 과 분리하여 유지하는 것 입니다. 또한 장기적으로 코드를 더 깨끗하고 유지 관리하기 쉽게 만듭니다.

더 많은 질문이 있으면 의견을 남겨주세요.

자세한 내용은 PHP 문서 에서 이러한 내용을 확인할 수 있습니다 .


참고 : PHP 짧은 태그 <??>함께 사용할 경우, 그들은 단지 사용할 수 있기 때문에 권장되지 않습니다 short_open_tagphp.ini의 구성 파일 지정, 또는 PHP가 함께 구성된 경우 --enable-short-tags옵션을 선택합니다. 5.4 이후의 설정에 관계없이 사용할 수 있습니다 .


답변

다음과 같이 시도하십시오 ( heredoc 구문).

$variable = <<<XYZ
<html>
<body>

</body>
</html>
XYZ;
echo $variable;


답변

제어 구조에 대해 대체 구문 대체 구문을 사용하고 PHP에서 벗어날 수 있습니다.

<?php if ($something): ?>
    <some /> <tags /> <etc />
    <?=$shortButControversialWayOfPrintingAVariable ?>
    <?php /* A comment not visible in the HTML, but it is a bit of a pain to write */ ?>
<?php else: ?>
    <!-- else -->
<?php endif; ?>


답변

기본적으로 PHP 태그 외부에 HTML을 둘 수 있습니다. 논리와 표현을 분리하기 위해 데이터를 표시하기 전에 필요한 모든 데이터 처리를 수행하는 것도 매우 유용합니다.

데이터 디스플레이 자체는 동일한 PHP 파일의 맨 아래에 있거나 대부분 HTML로 구성된 별도의 PHP 파일을 포함 할 수 있습니다.

이 컴팩트 한 스타일을 선호합니다.

<?php
    /* do your processing here */
?>

<html>
<head>
    <title><?=$title?></title>
</head>
<body>
    <?php foreach ( $something as $item ) : ?>
        <p><?=$item?></p>
    <?php endforeach; ?>
</body>
</html>

참고 : PHP 설정 <?php echo $var; ?><?=$var?>따라 대신 사용해야 할 수도 있습니다 .


답변

나는이 스타일을 좋아한다.

  <html>
    <head>
<%    if (X)
      {
%>      <title>Definitely X</title>
<%    }
      else
      {
%>      <title>Totally not X</title>
<%    }
%>  </head>
  </html>

예, ASP 스타일 태그를 사용합니다. PHP와 HTML의 혼합은 내 눈에 매우 읽기 쉬운 것 같습니다. 트릭은 <%%>마커를 올바르게 얻는 것 입니다.


답변

또 다른 방법은 HTML을 별도의 파일에 넣고이 경우 자리 표시 자 [[content]]로 변경할 영역을 표시하는 것입니다. (str_replace 대신 sprintf를 사용할 수도 있습니다.)

$page = 'Hello, World!';
$content = file_get_contents('html/welcome.html');
$pagecontent = str_replace('[[content]]', $content, $page);
echo($pagecontent);

또는 버퍼에 캡처 된 화면에 모든 PHP 항목을 출력하고 HTML을 작성한 다음 PHP 출력을 페이지에 다시 넣을 수 있습니다.

PHP를 작성하고 포착 한 다음 다시 작성하는 것이 이상하게 보일 수 있지만 모든 종류의 서식 지정 작업을 수행 할 수 있음을 의미합니다 ( heredoc 등)을 수행하고 페이지의 번거 로움없이 올바르게 출력 테스트 합니다. 방해가되는 템플릿. ( Joomla CMS 는 이런 방식으로 수행합니다, BTW.)

즉 :

<?php
    ob_start();
    echo('Hello, World!');
    $php_output = ob_get_contents();
    ob_end_clean();
?>
<h1>My Template page says</h1>
<?php
    echo($php_output);
?>
<hr>
Template footer


답변

다음과 같이 단순히 인쇄 기능을 사용하여 PHP 파일의 텍스트를 에코합니다.

<?php

  print('
    <div class="wrap">

      <span class="textClass">TESTING</span>

    </div>
  ')
?>