2016-09-19 5 views
1

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

<!DOCTYPE html> 
<html> 
<head> 
<title><?php echo $title?></title> 
</head> 
<body> 

<p>Hi, this is my homepage. I'll include some text below.</p> 

<?php 
include "myfile.php"; 
?> 
</body> 
</html> 

"myfile.php", например, включает в себя следующее:

<?php 
$title = "Hi, I'm the title tag…"; 
?> 
<p>Here's some content on the site I included!</p> 

В <p> Гце выводимого но <title> тег остается пустым.

Как я могу связаться, чтобы получить $title с включенного сайта, а также показать включенный контент в теге <body>?

+0

использовать эхо $ название, чтобы показать на экране. –

+1

Что вы пытались сделать. 'include' используется для включения файлов. Сделайте свой вопрос немного более ясным. – Sasikumar

+0

Ваш файл должен был быть добавлен перед использованием переменной '$ title'. – Sasikumar

ответ

1

Вот мое решение:

index.php 

<?php 
// Turn on the output buffering so that nothing is printed when we include myfile.php 
ob_start(); 

// The output from this line now go to the buffer 
include "myfile.php"; 

// Get the content in buffer and turn off the output buffering 
$body_content = ob_get_contents();  

ob_end_clean(); 
?> 

<!DOCTYPE html> 
<html> 
<head> 
<title><?php echo $title?></title> 
</head> 
<body> 

<p>Hi, this is my homepage. I'll include some text below.</p> 
<?php 
echo $body_content; // Now, we have the output of myfile.php in a variable, what on earth will prevent us from echoing it? 
?> 
</body> 
</html> 

myfile.php не изменился.

P.S: Как Noman предложил, вы можете сначала include 'myfile.php'; в начале index.php, затем echo $content; внутри тела тега, и изменить myfile.php во что-то вроде этого:

<?php 
$title = "Hi, I'm the title tag" 
ob_start(); 
?> 

<p>Here's some content on the site I included!</p> 

<?php 
$content = ob_get_contents(); 
ob_end_clean(); 
?> 
+0

Ваше собственное решение работает. Но как это работает. Не могли бы вы объяснить это мне, пожалуйста? – David

+1

Когда вы включаете 'myfile.php', выводится часть html. Я использую функцию ob_ *, чтобы зафиксировать ее в переменной вместо того, чтобы позволить ее распечатать, вот и все. 'ob_start()', чтобы включить буферизацию вывода, 'ob_get_contents()', чтобы получить строку, хранящуюся в буфере, 'ob_end_clean()' для очистки выходного буфера, а затем отключить буферизацию вывода. –

+0

Спасибо за объяснение. Хорошего дня! – David

0

Существует еще один способ сделать это:

index.php

<?php 
include "myfile.php"; 
?> 

<!DOCTYPE html> 
<html> 
<head> 
<title><?php echo $title?></title> 
</head> 
<body> 

<p><?php $content; ?></p> 

</body> 
</html> 

myfile.php

<?php 
$title = "Hi, I'm the title tag…"; 
$content = "Here's some content on the site I included!"; 
?> 
+1

Не помогло. Как это должно работать? – David

+0

проверить мой обновленный ответ. – Noman

+0

Не понимаю, что вы имеете в виду. Не могли бы вы включить это в свой код, пожалуйста !? – David

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