Как в переменную php записать структуру в html + echo?

143
30 марта 2019, 05:10

Есть сайт на wordpress. Интересует как в php переменную записать вывод html и содержимое echo. Пробую так:

<?php $s = '<p><a class="lostpassword" href="'. echo wp_lostpassword_url(). '">'. _e('Lost Password', 'memberdeck') . '</a></p>'; ?>

и пробую так:

<?php $s = '?><p><a class="lostpassword" href="<?php echo wp_lostpassword_url() ?>"><?php _e('Lost Password', 'memberdeck') ?></a></p><?php '; ?>

не получается..

Answer 1

Для записи вывода в строку в php есть средства работы с буфером вывода.

ob_start();
// любой код php с выводом на экран
$s = ob_get_clean();

В результате выполнения этого кода весь планируемый вывод на экран попадёт в строку $s.

В применении к вашему коду (насколько я понял вопрос), должно выглядеть так:

ob_start();
echo '<p><a class="lostpassword" href="'. wp_lostpassword_url(). '">'. __('Lost Password', 'memberdeck') . '</a></p>';
$s = ob_get_clean();

А можно ещё проще:

$s = '<p><a class="lostpassword" href="'. wp_lostpassword_url(). '">'. __('Lost Password', 'memberdeck') . '</a></p>';

Функцию _e() надо заменить на __(), потому что первая производит вывод, а вторая - просто возвращает строку.

Answer 2
ob_start();
echo '<p><a class="lostpassword" href="'. wp_lostpassword_url() . '">'. _e('Lost Password', 'memberdeck') .'</a></p>';
$s = ob_get_clean();

вот так должно работать, пробуйте

READ ALSO
Как парсить номер телефона из теста?

Как парсить номер телефона из теста?

Здравствуйте я сделал парсер видео с ютуба и там есть в описании номера телефонов и скайпы подскажите регулярное выражение или как парсить...

170
Не могу обработать ответ от inline кнопок telegram bot php sdk

Не могу обработать ответ от inline кнопок telegram bot php sdk

Уже довольно долго мучаюсь, решил зарегистрироваться уже тутК сути

178
Алгоритм для онлайн-записи

Алгоритм для онлайн-записи

Заказчик поставил цель: создать для салона красоты онлайн запись на какую то услугуТ

176