Компилиране на съдържание с кратки тагове към var, без eval()

Като начало, позволете ми да разчистя въздуха, като кажа, че сме наясно с недостатъците/предимствата на използването на кратък синтаксис на тагове в PHP. Този въпрос не е за това.

Има ли начин да "включите" файл, съдържащ кратък код на етикет, в променлива и PHP действително да анализира кода?

include/require очевидно не предоставят данните в работеща форма и изходното буфериране не анализира кода на краткия етикет, защото това се случва по време на изпълнение.

Използването на eval() просто не е опция.

Предложения?


person Spot    schedule 03.05.2010    source източник
comment
...изходното буфериране не анализира кода на краткия етикет, защото това се случва по време на изпълнение. ... Какво?   -  person Ignacio Vazquez-Abrams    schedule 03.05.2010


Отговори (1)


ob_start();
$ini_sot = ini_get('short_open_tag');
ini_set('short_open_tag', 1);
include('file_with_short_tags.php');
ini_set('short_open_tag', $ini_sot);
$variable = ob_get_contents();
ob_end_clean();

Не съм сигурен какво имахте предвид във вашия въпрос за това как буферирането на изхода не е подходящо, но въпреки това го използвах. Предполагам, че проблемът ви е, че short_open_tags не е активиран на вашата платформа и може би просто трябва да го активирате временно в кода си.

person Martin    schedule 03.05.2010
comment
Това е страхотен отговор, но мисля, че PHP просто промени възможността за промяна на short_tags в движение по този начин, вижте us2.php.net/manual/en/ini.core.php#ini.short-open-tag. В ›4‹5.3 работи, но ›=5.3 трябва да е php.ini, .htaccess или httpd.conf и т.н. (us2.php.net/manual/en/configuration.changes.modes.php) - person Hans; 03.05.2010
comment
Вие сте абсолютно прав. Преди да стигна достатъчно далеч, за да проверя, друг източник ми каза, че определено има разлика между времето за компилиране и времето за изпълнение. Благодаря ти! - person Spot; 03.05.2010