Как сохранть значение выведенное через echo в переменную?

163
04 ноября 2019, 03:10

Столкнулся с одной проблемой, на первый взгляд все не просто. Предлагаю два есть две вариации вопроса

Первая из них изолированна от остального, но отражает всю суть того, что нужно получить в конечном итоге:

function func() {
    echo '20';
};
func();

Нужно сохранить то, что выводиться с помощью echo в переменную. При этом нельзя менять саму функцию, а так же нужно удалить вывод на страницу от самого echo, т.е. в итоге у нас в переменной должно находиться число 20, а на страницу ничего не должно выводиться.

Далее вторая вариация вопроса и зачем это все вообще нужно.

Есть плагин для WordPress - Advanced Custom Fields

Есть допустим три страницы, на каждой из них нужно выводить разные посты, при этом эти страницы пользователь сам может создавать. Я придумал такую схему:

  1. Создать метку
  2. Через custom fields при создании страницы передавать название метки в код
  3. Генерировать посты с учетом полученной метки

Таким образом юзер может создавать страницу и генерировать на ней новые посты.

Но беда в том, что плагин не возвращает значение, которое было введено юзером в поле, а просто выводит через echo под капотом как я понял. Моих познаний в PHP не достаточно чтобы исправлять что-то под капотом. Есть какие-нибудь варианты по поводу решения?

Answer 1

Для ваших целей надо использовать буферизацию вывода, пример:

<?php
ob_start();
echo "Привет ";
$out1 = ob_get_contents();
echo "Мир";
$out2 = ob_get_contents();
ob_end_clean();
var_dump($out1, $out2);

Все что между ob_start(); и ob_end_clean(); не выводится на экран а перехватить можно так $out = ob_get_contents();

Подробнее ob_get_contents()

Подробнее Функции контроля вывода

READ ALSO
Как создать содержимое и передать в файле xml на sftp?

Как создать содержимое и передать в файле xml на sftp?

Пытаюсь создать и передать файл xml c содержимым через SSH Пробовал через curl,при этом файл создается на sftp но с пустым содержимымСам код:

171
php mysql выбор данных в столбце

php mysql выбор данных в столбце

подскажите как можно выбрать значение из столбца 'route_long_name' в mysql, если есть запись в нем такого вида разделенная (-) "АС

160
Что это строка означает?

Что это строка означает?

Можете подсказать, что делает пятая строка:

153
Хранить и редактировать данные из MYSQL или ФАЙЛА в php

Хранить и редактировать данные из MYSQL или ФАЙЛА в php

Исходник: TXT файлВ нем 800 000 строк

170