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