Forum Webscript.Ru

Программирование => PHP => Тема начата: Foshvad от 12 Мая 2002, 14:24:05

Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 14:24:05
Некрасивая тема, знаю, но как иначе сказать не придумал.

Есть переменная, содержащая буквально следующее:

$str = \'This is a $string with my $name in it\'

Вопрос: как это обработать так, что в соответствующем месте include’нулся file.inc ?

Чтоб $string и $name показало – понятное дело в eval() взять. А чтоб include выполнить?

Можно $str = \'This is a $string with include(‘file.inc’) my $name in it\' или $str = \'This is a $string with {file.inc} my $name in it\' – главное, чтоб include’нулся!
Название: Выполнение include, указанного в переменной.
Отправлено: Britva от 12 Мая 2002, 15:23:46
ob_start();
include \'file.inc\';
$content = ob_get_contents();
ob_end_clean();
$str = \'This is a \'.$string.\' with \'.$content.\' my \'.$name.\' in it\';
Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 15:24:09
Хм.... пришло уведомление,  что Britva ответил на подписанную вами тему, а ответа-то и нету :))
Развели :) :)
Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 15:25:47
Извиняюсь, ответ есть. Видимо кэш глюкнул в IE :(
Название: Выполнение include, указанного в переменной.
Отправлено: Britva от 12 Мая 2002, 15:25:52
Ответил :))
просто сначала не так понял вопрос, и не то написал :)
Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 15:28:50
Хм... этот  варинат я знаю.... :(

Ну а если в файле полно таких include\'ов. Я так понимаю их надо будет через рег все выцепить, потом про-ob_get_contents() в $content[], а потом вставлять поиском заменой?...


а по проще получается никак нельзя?
Название: Выполнение include, указанного в переменной.
Отправлено: Oak от 12 Мая 2002, 18:33:55
Еще - если тебе надо одну строку только:

$a=FILE("file.inc");

$b="sadahdgh".$a[0]."jdhsfjshfksdfh";
Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 18:53:30
2Oak: Да нет, в file.inc что-то типа





echo "So, what?!";

?>


вот-с..
Название: Выполнение include, указанного в переменной.
Отправлено: Dm от 12 Мая 2002, 20:23:03
eval
Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 20:32:09
Дык что eval ?!
eval - это когда надо

$str = \'This is a $string with my $name in it.
\';
echo $str;



Если в $str есть include?
Может я просто не так записываю?
2Dm:  можно пример?
Название: Выполнение include, указанного в переменной.
Отправлено: Dm от 12 Мая 2002, 20:46:07

eval(implode(file("code.php"), ""));

только в code.php не должно быть тегов php .

вообще, имхо, лучше сделать так, как Бритва посоветовал,
если include любого php скрипта.
Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 21:02:46
Так в том-то и дело, что в code.php испоняемый код! В котором и есть.
Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 21:07:10
А ведь работает..... :-[         ]
Работает!!! :)

Спасибо огромное!!!!!!!!!!!!!!!!!

P.S. А почему лучше через ob_get_contents();? Это так, из любопытства.
Название: Выполнение include, указанного в переменной.
Отправлено: Britva от 12 Мая 2002, 21:12:23
ob_get_contents - берет то, что выводит include в браузер, т.е. перехватывает поток и записывает в переменную.
Название: Выполнение include, указанного в переменной.
Отправлено: Foshvad от 12 Мая 2002, 21:52:48
2Britva: а чем это (ob_get_contents) будет отличаться от eval(implode(file("code.php"), "")); ?
Название: Выполнение include, указанного в переменной.
Отправлено: Dm от 12 Мая 2002, 22:06:09
Foshvad
сам результат ничем отличаться не будет.
ob_+include лучше использовать, имхо, т.к. удобно и производительнее.
include предназначен именно для того, чтобы выполнять и вставлять любой файл с кодом php.

----
ps. хм... не обратил внимание, а ведь это 1000 пост :)