2015-04-19 2 views
1

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

File1 (test1.php)

<?php 
    ob_start(); 
    include_once './test2.php'; 
    $test = ob_get_contents(); 

    echo $test; 
?> 

и здесь file2 (test2.php)

<?php 
    $testVar = 'Name!'; 
?> 
<div class="testClass"><?php echo $testVar?></div> 
<p>Spam2</p> 

и я хочу, чтобы сделать это только из-за

эха $ теста

линии не потому, что файл вывод контента.

<p>Spam2</p><div class="testClass">Name!</div> 
<p>Spam2</p></body> 

из-за эха, но он возвращает этот

<p>Spam2</p><div class="testClass">Name!</div> 
<p>Spam2</p></body> 
<p>Spam2</p><div class="testClass">Name!</div> 
<p>Spam2</p></body> 

Так как я могу получить его только возвращать содержимое раз?

+0

Где 2 файла ??? Вам нужны два файла. 1. Фактически содержит некоторое содержимое. 2.This php file Считывает содержимое из другого файла. Пожалуйста, будьте ясны. –

+0

, если вы собираетесь проверить свой код. вы пишете слово «спам» в файл php. и в том же php-файле вы получаете содержимое одного и того же php-файла. и эхо его .. Пожалуйста, уточните вопрос –

+0

Я хочу, чтобы файл только «спам» один раз. Значение переменной $ test является единственным контейнером со спамом. Я не знаю, как еще это сказать. Это привело бы к тому, что я на самом деле хочу сделать, но я ломаю вещи, прежде чем усложнись. – UioShi

ответ

0

Не echo $test;. PHP выполняет как следует. Так как ./test2.php показывает Спам в HTML, он появляется на странице, затем вы назначаете содержимое страницы переменной и echo. Что вы ожидаете?

+0

Я объяснил, чего я ожидал. Я хочу получить то, что выводит файл, и принять его в переменную, а затем использовать. Я не хочу, чтобы он выводил И помещал его в переменную. Я не спрашивал, правильно ли он работает, я спросил, как заставить его делать что-то другое, чем то, что происходит. – UioShi

+0

Вам не нужно выводить файл, если вы используете 'file_get_contents()'. 'ob_get_contents()' для буферизации вывода для получения содержимого текущей страницы.Вам даже не нужно «ob_start()», если вы не хотите выводить буферный код. Когда вы включаете или требуете файл, он попадает прямо в файл, в который вы его включили. – PHPglue

+0

Вель, ты помогаешь мне, задавая вопрос, где он должен быть. Я обновил еще раз, извините. Как у меня была остальная часть моей настройки проекта, так это то, что она взяла содержимое и вернула его в JSON, но я полагаю, что переход на просто сам HTML, без JSON, облегчил бы эту проблему и облегчил бы другие секторы этой темы. Вместо этого я изменю, как я хочу использовать эти данные. Спасибо за помощь в том, чтобы подтолкнуть меня к этому направлению: P. Мой фактический вопрос может остаться без ответа. – UioShi

0

Если у вас есть 2 файла, скажите: и app/config.php, вы можете просто использовать ключевое слово return для возврата некоторого содержимого из файла config.php. И затем, когда вы включаете файл, все, что вы вернули из config.php, можно сохранить в переменной.

Пример:

Первое возвращение, что вы хотите из файла config.php (может быть массив, строка, и т.д.).
<?php 
return ['name' => 'Spam']; 
Тогда в index.php:
<?php 
$contents = include_once('config.php'); 
echo $contents; 
+0

Хорошо, есть два способа включить файл, и вы получите нужный результат следующим образом: ' '. Другой, если вы должны сохранить содержимое переменной по любой причине. Является вызовом 'ob_end_clean()' перед 'echo'. – scrubmx

Смежные вопросы