Есть ли способ вернуть HTML в функцию PHP? (без построения возвращаемого значения в виде строки)
У меня есть функция PHP, которую я использую для вывода стандартного блока HTML. В настоящее время это выглядит так:
<?php function TestBlockHTML ($replStr) { ?>
<html>
<body><h1> <?php echo ($replStr) ?> </h1>
</html>
<?php } ?>
Я хочу вернуть (а не Эхо) HTML внутри функции. Есть ли способ сделать это без создания HTML (выше) в строке?
7 ответов:
вы можете использовать heredoc, который поддерживает переменную интерполяцию, что делает его довольно аккуратным:
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(); } ?>
Это может быть схематичное решение, и я был бы признателен, если бы кто-нибудь указал, является ли это плохой идеей, поскольку это не стандартное использование функций. У меня был некоторый успех в получении HTML из функции PHP без построения возвращаемого значения в виде строки со следующим:
function noStrings() { echo ''?> <div>[Whatever HTML you want]</div> <?php; }
просто "вызов" функции:
noStrings();
и он будет выводить:
<div>[Whatever HTML you want]</div>
используя этот метод, вы также можете определить переменные PHP в функции и эхо их внутри 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>{$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; }