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
'programing' 카테고리의 다른 글
64비트 OS에서 32비트 JVM의 최대 Java 힙 크기 (0) | 2022.10.06 |
---|---|
생성 시 및 업데이트 시 MySQL CURRENT_TIMESTamp (0) | 2022.10.06 |
numpy.random.seed(0)의 역할은 무엇입니까? (0) | 2022.10.06 |
Vue router-link 완전 액티브클래스 (0) | 2022.10.06 |
Python 3.7 데이터 클래스 상속 (0) | 2022.10.06 |