PHP işlevi HTML dönmek için herhangi bir yolu var mı?

6 Cevap php

Ben çıktı HTML standart bir bloğu kullanıyorum bir PHP işlevi var. Şu anda bu gibi görünüyor:

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

Ben işlev içinde (yerine echo daha) HTML dönmek istiyorum. Bir dize HTML (yukarıda) kadar bina olmadan bunu yapmak için herhangi bir yolu var mı?

6 Cevap

Bunu oldukça düzgün görünmesini sağlar, değişken enterpolasyon destekleyen bir heredoc, kullanabilirsiniz:

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

Olsa kılavuzdaki uyarı yakın dikkat - kapanış çizgisi herhangi bir boşluk içermemelidir, yani girintili olamaz.

Bu kabataslak bir çözüm olabilir ve bu fonksiyonların standart bir kullanım değil çünkü ben, herkes bu kötü bir fikir olup olmadığını işaret takdir ediyorum. Ben şu bir dize olarak dönüş değeri bina olmadan bir PHP fonksiyonu dışında HTML alma bazı başarı elde ettik:

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

Sadece 'arama' fonksiyonu:

noStrings();

Ve bu çıkış olacaktır:

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

Bu yöntemi kullanarak, aynı zamanda fonksiyon içinde PHP değişkenleri tanımlamak ve HTML içinde onları yankı.

Bir şablon dosyası oluşturmak ve güncellemek / dosyayı okumak için bir şablon motoru kullanabilirsiniz. Bu kodun gelecekte idame yanı sıra mantığından ayrı ekran artacaktır.

Kullanan bir örnek Smarty,

Template File

<!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>

Code

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

Kapanış çizgi var Paul'un çözüm kullanırken emin olun

HTML;

hiçbir lider boşluk veya sekme ayrı bir çizgide.

Yapmanın bir başka yolu file_get_contents() kullanmak ve bir şablon HTML sayfası sahip olduğunu

TEMPLATE PAGE

<!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 İşlev

function YOURFUNCTIONNAME($url){

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

}