Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > php из файла не работает


Автор: DRUG_ADDICT 11.7.2010, 13:17
проблема на примере...

есть два файла: 

123.php
Код

<?
$file = file_get_contents("index");
echo $file;
?>


и если в этом файле index записан скрипт:

Код

<?
$echo = "Привет";
echo $echo;
?>


- ну и более сложный скрипт... 

как быть тогда? как вывести в 123.php файл этот, причем чтоб он отработал... =((( помогите плиз

Автор: patap 11.7.2010, 15:00
файл 123.php
Код

include('index.php');


файл index.php
Код

$echo = "Привет";
echo $echo;


?

Автор: DRUG_ADDICT 11.7.2010, 15:48
Цитата(patap @ 11.7.2010,  15:00)
файл 123.php
Код

include('index.php');


файл index.php
Код

$echo = "Привет";
echo $echo;


?

не понимаешь там в тексте в index ещё HTML код есть какбэ... ну текст вообще, просто там в тексте переменные вот эти используются и всё такое пхпшное... 

smile 
получается если инклудить то надо и хтмл экранировать а ещё и echo ему давать, а должно выглядеть так: написал текст вставил переменную и ещё чего там сохранил и все... короче я тут типа движек пишу не использующий БД, все данные в файлах хранятся парсяться отудова и т.д. наверн так с echo не получиться... ммм что ещё моно попробовать? подскажите а... ну тоже что то с использованием переменных в тексте... типа тогда самим эти переменные формировать движком чтоле?... ###. всё должно выглядеть просто...

Автор: skyboy 11.7.2010, 15:53
Цитата(DRUG_ADDICT @  11.7.2010,  14:48 Найти цитируемый пост)
получается если инклудить то надо и хтмл экранировать а ещё и echo ему давать

кто тебе такое сказал? и почему ты сам не проверил?
и мануал по-прежнему игнорируешь.
Цитата(php.net/include)

When a file is included, parsing drops out of PHP mode and into HTML mode at the beginning of the target file, and resumes again at the end. For this reason, any code inside the target file which should be executed as PHP code must be enclosed within valid PHP start and end tags. 

Автор: DRUG_ADDICT 11.7.2010, 15:54
что-то знаешь, что-то типа... {variable} в тексте, но ет уж текст будет прходит через функцию в движке, ет геморно блин. как-то должно быть проще! я пока не знаю как....  smile

Добавлено через 1 минуту и 30 секунд
Цитата(skyboy @ 11.7.2010,  15:53)
Цитата(DRUG_ADDICT @  11.7.2010,  14:48 Найти цитируемый пост)
получается если инклудить то надо и хтмл экранировать а ещё и echo ему давать

кто тебе такое сказал? и почему ты сам не проверил?
и мануал по-прежнему игнорируешь.
Цитата(php.net/include)

When a file is included, parsing drops out of PHP mode and into HTML mode at the beginning of the target file, and resumes again at the end. For this reason, any code inside the target file which should be executed as PHP code must be enclosed within valid PHP start and end tags. 

 smile  =))))))))))

и я проверял! мне выдало ошибку! ща покажу!

Добавлено через 3 минуты и 52 секунды
    Warning: include(<span class="tr3">впфрфрфрфрфрфрфрфр</span><p style="text-indent: 25px;">фрфрфр<strong>«фрфрфрфр»</strong> ыпывпвыпыпывпыпывп.</p&g in C:\Program Files\VertrigoServ\www\index\index.php on line 295

295: include($text);

там етот index =) 

Автор: skyboy 11.7.2010, 16:05
Цитата(DRUG_ADDICT @  11.7.2010,  14:54 Найти цитируемый пост)
include(<span class="tr3">впфрфрфрфрфрфрфрфр

что-то неясно.
ты что, делаешь include на результат замены имен переменных на соответствующее значение?

Автор: DRUG_ADDICT 11.7.2010, 16:05
и кстати говоря $text; хранит не весь текст файла, а тока его часть, там массив короче, кусок текста, чтоб в страницу вставить... =(

Добавлено @ 16:08
когда через echo вывожу етот текст, то переменые эти как текст выглядят, обычный текст, ну ето и понятно =))) а include вы тут мне сами предлагаете, не думаю что с ним что то получиться, пробовал уже. smile

Добавлено @ 16:16
Цитата(skyboy @  11.7.2010,  16:05 Найти цитируемый пост)
на результат замены имен переменных на соответствующее значение? 

вот это кстати мне и надо =((( вот в том примере что в самом первом посте, что на что надо заменить? какуюто функцию мож там пхпешную дефолтную поставить, чтоб как рас ето происходило...и кста не только с какой то отдельной переменой объявленной в 123.php или в index, а вообще с кусоком кода допустим... smile 

типа...:

123.php
Код

<?
$text2 = "456";
$file = file_get_contents("index");
echo $file;
?>


index
Код

<strong>Здарсть</strong>
<?
$text = "123";
echo $text.$text2;

?>



Автор: skyboy 11.7.2010, 16:25
Цитата(DRUG_ADDICT @  11.7.2010,  15:05 Найти цитируемый пост)
типа...:

ну, и опять тут file_get_contents.
в указанном случае как раз include отлично отработает.
и нет тут никаких переменных в фигурных скобках.

Добавлено через 1 минуту и 20 секунд
Цитата(DRUG_ADDICT @  11.7.2010,  14:54 Найти цитируемый пост)
{variable} в тексте, но ет уж текст будет прходит через функцию в движке

изобретаешь велосипедсвой шаблонизатор? 
а чем не устраивают smarty и twig?

Автор: DRUG_ADDICT 11.7.2010, 16:37
не правильно пример показал, начить инклуде() просит как правило файл же, ссылку на файл, у меня файла нет, там в $text маси сидит, текст (html, php)... ну моно етот масив конечно отдельно писать как то в  файл О_о и выводить через инклуде, хммм мож попробовать... мож как то в /temp/ писать, чтоб не создавать не удалять файл...

короче по идее файл index выглядит так

Код

[NAME]123[/NAME]
[HEAD]123[/HEAD]
[TEXT]123[/TEXT]
[URL]123[/URL]
[TIME]123[/TIME]


и вот как рас то что между [TEXT] ... [/TEXT] там и содержаться в $text;

как быть?

Добавлено через 1 минуту и 59 секунд
как лучше сделать думаешь? файл сооздавать и туда писать етот $text; и выводить через инклуде или че другое есть? у меня пока ток ето на уме =( 

Автор: skyboy 11.7.2010, 17:24
можешь начать использовать http://php.net/eval. когда начнутся проблемы с производительностью(благодаря eval они начнутся довольно скоро), переходи на запись в файл.
мне подход smarty(в twig - не в курсе, как реализовано) нравится, когда всякие самодельные конструкции заменяются на РНР-код и эта уже "скомпилированная" версия кешируется и используется. даже без учета тормозов eval при каждом разе заново парсит неизменный шаблон кажется мне дурной идеей.

Автор: DRUG_ADDICT 11.7.2010, 17:47
лан спасибо, буду курить инклуд, ща почитал там реал ет должно получиться и создам файл через tmpfile(); ... чето ты мны напугал eval(); функцией =))) не надо мне её юзать =) переходить потом ещё уууу =) не

про smarty и twig ваще первый рас слышу =( не наю даж как оно выглядит и где находиться... ла иа пошел! тема решена корочь! smile 

Автор: DRUG_ADDICT 11.7.2010, 18:21
всё сделал =) кул 

Код

if (isset($_GET['content']) or isset($_GET['news']) or basename($file) == "index") {
$tmpfname = tempnam("./tmp", "FOO");
$handle = fopen($tmpfname, "w+");
fwrite($handle, $text);
include($tmpfname);
fclose($handle);
unlink($tmpfname);
} else {
print($text);
}


ток чет не стал юзать tmpfile(); а тэ там хз де он папку темп найдёт + к тому же не возвращает её путь ! =( ###

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)