ProgramingTip

PHP 함수에서 HTML을 반환하는 방법이 있습니까?

bestdevel 2020. 12. 6. 21:55
반응형

PHP 함수에서 HTML을 반환하는 방법이 있습니까? (반환 값을 싼값으로 빌드하지 않고)


표준 HTML 블록을 출력하는 데 사용하는 PHP 함수가 있습니다. 현재는 다음과 가변합니다.

<?php function TestBlockHTML ($replStr) { ?>
    <html>
    <body><h1> <?php echo ($replStr) ?> </h1>
    </html>
<?php } ?>

함수 내에서 HTML을 (에코 대신) 반환하고 싶습니다. HTML (위)을 작성하지 않고 수행 할 수있는 방법이 있습니까?


보간을 지원 변수 하는 히어 닥을 사용하여 상당히 깔끔하게 만들 수 있습니다.

function TestBlockHTML ($replStr) {
return <<<HTML
    <html>
    <body><h1>{$replStr}</h1>
    </body>
    </html>
HTML;
}

설명서의 경고에주의를 기울이십시오. 닫는 줄에는 공백이 없어야 들여 쓰기 할 수 없습니다.


예, 있습니다 : 다음을 echo사용하여 ed 텍스트를 효율적으로 사용할 수 있습니다 .ob_start

<?php function TestBlockHTML ($replStr) { ob_start(); ?>
    <html>
    <body><h1> <?php echo ($replStr) ?> </h1>
    </html>
<?php
    return ob_get_clean();
} ?>

이것은 강력한 기능의 사용이 아니기 때문에 이것이 나쁜 생각인지 지적하는 사람에게 감사드립니다. 다음과 같은 패키지로 반환 값을 작성하지 않고 PHP 함수에서 HTML을 가져 오는 데 성공했습니다.

function noStrings() {
    echo ''?>
        <div>[Whatever HTML you want]</div>
    <?php;
}

함수를 '호출'하면 :

noStrings();

그리고 다음과 같이 출력됩니다.

<div>[Whatever HTML you want]</div>

이 방법을 사용하면 함수 내에서 PHP 변수를 정의하고이를 HTML 내에서 에코 할 수도 있습니다.


템플릿 파일을 만들고 템플릿을 사용하여 파일을 읽고 업데이트 엔진합니다. 앞으로 코드의 유지 관리 가능성을 높이고 운영과 분리하여 표시 할 수 있습니다.

Smarty 를 사용 예 :

템플릿 파일

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title>{$title}</title></head>
<body>{$string}</body>
</html>

암호

function TestBlockHTML(){
  $smarty = new Smarty();
  $smarty->assign('title', 'My Title');
  $smarty->assign('string', $replStr);
  return $smarty->render('template.tpl');
}

또 다른 방법은 file_get_contents () 를 사용 하고 템플릿 HTML 페이지를 사용할 것입니다.

템플릿 페이지

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head><title>$title</title></head>
<body>$content</body>
</html>

PHP 기능

function YOURFUNCTIONNAME($url){

$html_string = file_get_contents($url);
return $html_string;

}

또는 다음을 사용할 수 있습니다.

<?
function TestHtml() { 
# PUT HERE YOU PHP CODE
?>
<!-- HTML HERE -->

<? } ?>

이 함수에서 내용을 얻으려면 다음을 사용하십시오.

<?= file_get_contents(TestHtml()); ?>

그게 다야 :)


타사 도구에 의존하지 않으려면 다음 기술을 사용할 수 있습니다.

function TestBlockHTML($replStr){
  $template = 
   '<html>
     <body>
       <h1>$str</h1>
     </body>
   </html>';
 return strtr($template, array( '$str' => $replStr));
}

참고 URL : https://stackoverflow.com/questions/528445/is-there-any-way-to-return-html-in-a-php-function-without-building-the-return

반응형