Forum Webscript.Ru

Программирование => PHP => Тема начата: inviZe от 27 Января 2003, 12:04:18

Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 12:04:18
Есть файл такого содержания



$str="текст";
echo $str;


содержимое файла вывожу:

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

но как сделать так, чтобы содержимое хранилось в переменной, помогите, а то с синтаксисом eval запутался....
Название: Вопрос по Eval()
Отправлено: AliMamed от 27 Января 2003, 12:18:38
я не понял, зачем eval тут вообще?
$filecontents=implode("\\n", file("file.php"));

Обрати внимание на синтаксис функции implode
Название: Вопрос по Eval()
Отправлено: Меняздесьдавнонет от 27 Января 2003, 12:33:35
inviZe Для включения файла используется не eval, а include. Eval вообще использовать ненадо. и синтаксиса у него никакого нет.
Скорее всего, ничего "в переменной" хратить не надо. Объясни, чего ты хочешь добиться, и тебе скажут, как это сделать правильно.

AliMamed , только без \\n
Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 12:35:27
Цитировать
я не понял, зачем eval тут вообще?


чтобы обрабатывать содержание как РНР код
Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 12:36:48
Цитировать
Для включения файла используется не eval, а include


мне нужно не включить файл, а вставить содержимое файла в переменную....
Название: Вопрос по Eval()
Отправлено: Меняздесьдавнонет от 27 Января 2003, 12:37:26
для этого служит include
Название: Вопрос по Eval()
Отправлено: Меняздесьдавнонет от 27 Января 2003, 12:38:21
зачем тебе в переменной исполняемый код?
Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 12:46:19
Цитировать
зачем тебе в переменной исполняемый код?


нужно выводить результат исполнения, нескольких файлов в одном месте, причём только определённых файлов, тех что помечены в БД
Название: Вопрос по Eval()
Отправлено: Меняздесьдавнонет от 27 Января 2003, 12:59:19
чудеса какие-то.
Тебе вообще знакомы такие понятия как case, function?
кроме держания кода в отдельных файлах есть еще много способов написания программ. Правильных способов, а не кривизны.

Даже если с файлами - кто тебе мешает доставать в цикле имена этих файлов и делать include($row[\'file\'])?

Но вообще архитектура у тебя стремная.
Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 13:06:28
Цитировать
Тебе вообще знакомы такие понятия как case, function?

знакомы.....

вы можете ответить на мой вопрос???
Цитировать
кто тебе мешает доставать в цикле имена этих файлов и делать include($row[\'file\'])


шаблон мешает..
т.е. дизайн построен на шаблонах.
результат работы кода, должен выводится в том месте шаблона, где стоит эта самая переменная..

содержание шаблона переменной я присваивать понял как :

eval("\\$main.= \\"".$DB->tpl("news")."\\";");
Название: Вопрос по Eval()
Отправлено: Меняздесьдавнонет от 27 Января 2003, 13:14:37
на вопрос тебе давно ответили.
Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 13:22:37
кто и где
ты мне ответил, только про инклуд, но оне мне не нужен!!!

$filecontents=implode("\\n", file("file.php")); выдаёт содержимое файла, не обрабатывая PHP код
Название: Вопрос по Eval()
Отправлено: AliMamed от 27 Января 2003, 13:24:54
а сам дальше додуматься не можешь?

литература к размышлению:
http://www.php.net/implode
http://www.php.net/file
http://www.php.net/eval
Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 14:21:38
Цитировать
а сам дальше додуматься не можешь?


почему дальше, я нового пока, что ничего не получил.....

Я вообще я думал что на форумах принято отвечать на вопросы, а не посылать в мануал...
Название: Вопрос по Eval()
Отправлено: AliMamed от 27 Января 2003, 15:00:36
Цитировать
как сделать так, чтобы содержимое хранилось в переменной

Цитировать
$filecontents=implode("\\n", file("file.php"));

Цитировать
только без \\n
Название: Вопрос по Eval()
Отправлено: Меняздесьдавнонет от 27 Января 2003, 15:06:40
Цитировать
как сделать так, чтобы содержимое хранилось в переменной

Цитировать
$filecontents=implode("", file("file.php"));


Вот вопрос и вот ответ. содержимое файла file.php хранится в переменной $filecontents, которую ты можешь скормить eval.
что тебе еще непонятно?
Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 15:12:48
Название: Вопрос по Eval()
Отправлено: inviZe от 27 Января 2003, 15:30:53
$filecontents=implode("", file("file.php"));
     eval("\\$x=\\"$filecontents\\";");

Parse error: parse error, unexpected T_STRING in index.php(26) : eval()\'d code on line
Название: Вопрос по Eval()
Отправлено: AliMamed от 27 Января 2003, 16:16:06
eval("\\$x=\\"$filecontents\\";");
это ты чо хочешь сделать то???
Название: Вопрос по Eval()
Отправлено: Меняздесьдавнонет от 27 Января 2003, 16:20:22
Что это за $x и каким боком он тут притерся?
почему нельзя просто написать eval($filecontents);?

\\"$filecontents\\" - это вообще песня.

Да будет тебе известно, что в кавычках в PHP находятся СТРОКИ. простые строки. Вася петя мама мыла раму.
$query="DELETE FROM webscript_forum".
Знаешь почему из форуме ничего не удалилось? потому, что PHP воспринимает это не как свой код, а как строку. Текст. Разница понятно?

И еще. совет на будущее.

НЕ ГОРОДИ ТЫ 10 ОПЕРАТОРОВ ПОДРЯД, ЕСЛИ НИ ОДНОГО НЕ ПОНИМАЕШЬ!
ДЕЛАЙ ПО ОЧЕРЕДИ
сделал один - вывел результат.
посмотрел - все правильно? то, что ожилдалось?
Если нет - исправляй.
И только после этого переходи к следующему.
в первом вопросе до евала вообще дело не хоходит. проблема в имплоде. а ты ее даже не увидел. А должен был сам. Если делать по очереди.

В последнем вопросе то же самое.
Ты бы хоть вывел на экран строку, которую передаешь в евал. Да посмотрел - а вообще она соответствует твоим представлениям о том, как она должна выглядеть?
подсказка: Эта строка должна выглядеть как обыкновенный PHP-код.
Название: Вопрос по Eval()
Отправлено: Tronyx от 27 Января 2003, 16:28:03
inviZe будь более уважителен к людям которые хотят тебе помочь! Ты себя ведёшь так, будто тебе обязаны.

Думаю быстрее будет без eval():
ob_start();
include("file.php");
$file_content=ob_get_contents();
ob_end_clean();