file_get_contents и php code - PullRequest
       0

file_get_contents и php code

7 голосов
/ 22 ноября 2010

Здравствуйте, есть ли способ получить содержимое php-файла при обработке в нем php-кода?Мне нужно включить код на другую страницу, но мне нужно напечатать его содержимое в определенной позиции.

Если я использую команду include, код будет напечатан до тега html, конечно, потому что он обрабатывается перед страницей,но если я использую file_get_contents, содержимое берется на странице, но если у меня есть несколько тегов php, я получу их в виде обычного текста.

Спасибо.

РЕДАКТИРОВАТЬ: извините, ребята, похоже,Я был пьян, когда писал.Я исправил.

У меня есть механизм, который обрабатывает содержимое страницы, помещает их в переменную и затем печатает их в определенной позиции на странице html.В движок мне нужно «встроить» код других «статических» страниц, которые могут иметь некоторые php-теги.Если я использую file_get_contents, я получу контент в виде обычного текста (без разбора php-тегов), если я использую include, он просто не будет работать, потому что это не функция для него.Поэтому мне нужно встроить обработанный код в движок (как готовый к печати HTML).

Ответы [ 3 ]

22 голосов
/ 22 ноября 2010

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

ob_start();
include('path/to/file.php');
$output = ob_get_contents();
ob_end_clean();

// now do something with $output
0 голосов
/ 22 ноября 2010

Если я правильно понимаю;Вы пытаетесь загрузить php-файл, чтобы прочитать его содержимое и выполнить его одновременно.

т.е.: include('/foo/bar') и file_get_contents('/foo/bar')

Следующая функция выполняет оба действия и возвращаетсодержимое файла, если оно существует.

function load_and_process($path) {
    if(file_exists($path) {
        include($path);
        return file_get_contents($path);
    }
    return false;
}

и называется так:

if($file_contents = load_and_process('/foo/bar')) {
    echo "Loaded $file_contents from /foo/bar";
}
0 голосов
/ 22 ноября 2010

Ваш вопрос не ясен на 100%, но похоже, что вы хотите включить удаленный источник php, вы можете использовать include ("http://domain.com/path/to/php.phps"); вместо file_get_contents.

Вы сказали, что вам просто нужночасть удаленного кода, если это так, вы можете использовать file_get_contents, получить эту часть кода с помощью substr или reg exp для сохранения в локальном файле и включить или выполнить eval.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...