Содержимое file_get_content() для обработки PHP

#php #file-get-contents

#php #file-get-contents

Вопрос:

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

Я изначально использовал require(вложенный файл) вместо file_get_contents() . Но это не совсем работает, так как мой контент размещается не в том месте. А также я не могу изменить файл шаблона, чтобы использовать require() .

мой шаблон выглядит примерно так:

 //TEMPLATE FILE.php
$html = file_get_contents(subFile); //I CAN NOT CHANGE  THIS FILE
  

Затем мой вложенный файл, тот, который я могу изменить.

 //SUB FILE.php
<div>Hello world, today is <?php echo date($mydate);?> </div>
  

Поскольку он вызывается с помощью file_get_contents(), он выводит

 Hello world, today is <?php echo date($mydate);?>
  

Вместо:

 Hello world, today is Thursday.
  

Итак, учитывая, что я не могу изменить TEMPLATE FILE.php , где используется file_get_content() .
Я подумал, есть ли способ, которым я могу обернуть содержимое SUB FILE.php таким образом, он обработал бы PHP, прежде чем разрешить его вызов с помощью TEMPLATE FILE.php .

Что-то вроде этого я ищу

 //SUB FILE.php
<force Process the PHP ?>
<div>Hello world, today is <?php echo date($mydate);?> </div>
<Finishe Force Process ?>
<allow it to be called via file_get_content();
  

Если бы я мог изменить файл шаблона, я мог бы использовать htmlspecialchars_decode(); но я не могу.

К сожалению, я не смог найти способ сделать это, поэтому в итоге я получаю это

 ob_start();
$output = include (Dir/SubFile);
$output = ob_get_contents();
ob_end_clean();
$html = $output; 

//$html = file_get_contents(subFile); The way it was
  

Комментарии:

1. Можете ли вы получить доступ к вложенному файлу через веб-сервер? Тогда вы можете сделать file_get_contents("http://localhost/subFile.php"); , и PHP будет выполнен.

2. Проблема в том, что я не могу создать файл шаблона, в котором выполняется file_get_contents(). 🙁

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

4. Сценарий шаблона просто читает файл, и чтение файла не выполняет его.

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

Ответ №1:

Ниже приведен пример официального руководства

 $homepage = file_get_contents('http://www.example.com');
echo $homepage;
  

попробуйте это:

 file_get_contents('http://YourDomain/Yoursubfile'); 
  

Ответ №2:

Вы не можете использовать <?php echo $a; ?> для отображения содержимого переменной $a . Потому что вы получите обычный HTML-контент из вашего вложенного файла.

Что вы можете сделать, так это:-

Шаг 1: my_date.php

 <?php
$today = date('M-d-Y');
$subfile_html = file_get_contents(subFile);  //Path to my_date1.html or my_date1.php
echo $new_html_content = str_replace('{TODAYS_DATE}', $today, $subfile_html); // It will replace the occurance {TODAYS_DATE} with today's date

// OUTPUT:
// Hello world, today is June 20 2014
?>
  

Шаг 2: my_date1.html или my_date1.php

 <div> Hello world, today is {TODAYS_DATE} </div>