Как выполнить файл с кодом PHP и присвоить значение переменной

Ezard

Новичок
Как выполнить файл с кодом PHP и присвоить значение переменной

Столкнулся с проблемой:
есть два файла, и оба с кодом PHP, а мне необходимо выполнить один из файлов в другом файле, и так, что бы результат был присвоен переменной, как бы переменная содержала в себе тот (другой файл), но с выполненным кодом.

Да, и как это лучше сделать?
 

Alexander Coral

Новичок
Имелось в виду что-то вроде этого?

1.php
PHP:
<?php

ob_start();

print 'executing 1.php...';

$output = ob_get_contents();
ob_end_clean();

return $output;

?>
2.php
PHP:
<?php

$result = include '1.php';

print 'Результат выполнения 1.php:<br />'.$result;

?>
 

Ezard

Новичок
Dreammakeк. Спасибо за ответ, но он не верен.

Alexander Coral огромное спасибо, все отлично работает.
Вопрос: а если все это должно происходить в одном файле. Например, выполняется файл с кодом PHP (в нем все отлично), но вот нужно выделить некоторые слова в его тексте. То тогда как.
Уточнение: то есть я должен иметь уже выполненный код и стандартными операторами выполнить изменения и только после этого выложить в браузер.

А ще точнее, как можно обойтись без расстановки ob_start(), ...

Возникла идея (верно или нет еще пока не знаю):

1.php

PHP:
<?php
for...

echo ....
....
?>

2.php
PHP:
<?php
ob_start();

include '1.php';
$output = ob_get_contents();

ob_end_clean();

print 'Результат:'.$result; 
?>
Что думают профессионалы?
 

Dreammaker

***=Ф=***
Ezard, что не так с моим советом?

1.php
PHP:
<?
  echo 'executing 1.php...';
?>
2.php
PHP:
<?
$output=file_get_contents("http://site.ru/1.php");
echo 'Результат выполнения 1.php:<br />'.$output;
?>
Всё превосходно работает.. :)

или 1.php использовался такой как в варианте Alexander Coral. Тогда понятно, что работать не будет..
 

Ezard

Новичок
Dreammaker , прости, я наверное не точно выразился. Конечно твой скрипт работает, но он работает если запрос идет через HTTP, а в мое случае файл локальный. И даже немного посложнее - выполняет операцию сам над собой.

Кстати, переписал код Alexander Coral. немного по другому (пример чуть ниже). Все заработало, только вот 2 очень большие проблемы:
1. Приходить все переменные объявлять GLOBAL (иначе он не видит)
2. Почему то не выполняется операция типа $S .= $massiv[$i]. Т.е. выполняется, но результат null. Хотя $S .= "Текст" работает прекрасно.

Уже замучился над второй проблемой, что только не перепробовал. А первая легко устранима.

Если кто может, подскажите что-нибудь.

Да эти ошибки появляются при выполнении кода между ob_start(); и ob_end_clean();
 

Dreammaker

***=Ф=***
что-то вся эта чехарда с вариантами отвлекла меня от основного вопроса, который нужно было сразу же задать. Может можно сделать всё по-другому и без головной боли..

Для чего сиё всё затевается.? То есть какова сама задача (без способов реализации). Покумекаем вместе, может и проще можно сделать (возможно, получится ограничится банальным include()).

p.s. Тем, более что файл локальный. И если там потребуется ловить хтмл, то в крайнем случае его можно склеить в одну переменную.
 

Ezard

Новичок
Dreammaker спасибо. У меня уже все получилось. Вторая проблема решилась сама собой. Суть этой ошибки: её и нет. Просто я забыл объявить одну переменную глобальной и подучилость так, что в результате вычислений переменная получаласть отрицательной, а запрес к массиву с отрицательным числом - сам понимаешь. Он все таки проблема объявления всех переменных (те которы используются в функциях и п.т.) глобальными мне не нравиться. Хотелось бы чего-нибудь попроще.

Для чего это все затеивалось. Нам заказали сайт, но от поддержки отказываются. Хотят что бы поддержкой занимались сами работники фирмы. А так как они не профессионалы (умеют пользоваться только FrontPage [очень мне не нравиться]) мне пришлось к основному файлу include дополнительный. А в этом дополнительном файле есть код PHP. + ко всему этому скрипт должен находить слова в уже HTML коде и выделять его. Как ни как результат должен выполняться над окончательным кодом. Вот и все. Вообщем все запутано, но получилось очень даже ничего.

Спасибо Всем большое, сам бы не догадался.
 

HollySpirut

Guest
А чем вам не подходит
PHP:
echo 'Результат выполнения 1.php:<br />'; 
include('1.php');
Если 1.php все выводит через echo(print)
 

Ezard

Новичок
HollySpirut , вопрос немного внимательнее прочитай.

`переменная содержала в себе...`
 
Сверху