programing

HTML을 PHP 함수로 되돌리는 방법이 있습니까?(반환값을 문자열로 작성하지 않음)

newsource 2022. 10. 6. 22:00

HTML을 PHP 함수로 되돌리는 방법이 있습니까?(반환값을 문자열로 작성하지 않음)

표준 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다음 명령을 사용하여 텍스트를 편집합니다.

<?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 TestBlockHTML($replStr){
  $template = 
   '<html>
     <body>
       <h1>$str</h1>
     </body>
   </html>';
 return strtr($template, array( '$str' => $replStr));
}

또는 다음과 같이 사용할 수 있습니다.

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

<? } ?>

이 함수에서 콘텐츠를 가져오려면 다음 명령을 사용합니다.

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

이상입니다:)

템플릿 파일

<h1>{title}</h1>
<div>{username}</div>

PHP

if (($text = file_get_contents("file.html")) === false) {
    $text = "";
}

$text = str_replace("{title}", "Title Here", $text);
$text = str_replace("{username}", "Username Here", $text);

그러면 $text를 문자열로 에코할 수 있습니다.

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