Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как преобразовать комбинированную страницу в статическую?
 
 автор: Владимир55   (17.11.2007 в 15:38)   письмо автору
 
 

В настоящее время предоставляемая пользователю информация собирается из сведений, находящихся в двух файлах. В файле 17-11-2007.php примерно такой код:

<?php
$sun_voshod    
"9:07";        // Время восхода Солнца
$sun_zahod     "16:00";        // Время захода  Солнца
?>

А в файле 17-11-2007.htm такой:

<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Долгота дня</title>
</head>
<body>
<p>Восход Солнца:
<?php
include "17-11-2007.php" ;
echo 
$sun_voshod ;
?>
</p>
<p>Заход Солнца:
<?php
include "17-11-2007.php" ;
echo 
$sun_zahod ;
?>
</p>
</body>
</html>

Пользователь вызывает файл 17-11-2007.htm и получает полный объем сведений.

А можно ли средствами рнр преобразовать эту конструкцию таким образом, что бы образовался новый файл 17-11-2007-1.htm, содержащий весь объем сведений, и который можно было бы запускать даже без поддержки рнр?

   
 
 автор: SHAman   (17.11.2007 в 16:03)   письмо автору
 
   для: Владимир55   (17.11.2007 в 15:38)
 

Читайте о буфферизации и о том, как сохранить текст в файл.

   
 
 автор: Владимир55   (17.11.2007 в 16:28)   письмо автору
 
   для: SHAman   (17.11.2007 в 16:03)
 

автор: SHAman Читайте о буфферизации и о том, как сохранить текст в файл.

Текст в файл я обычно сохраняю последовательностью операторов fopen, fputs и fclose . Как я полагаю, они подойдут и в этом случае. Нюанс в том, чтобы в сохраняемом файле сохранились и значения переменных из подключенного файла.

   
 
 автор: EXP   (17.11.2007 в 16:17)   письмо автору
 
   для: Владимир55   (17.11.2007 в 15:38)
 

там ошибка в файле.htm два раза include "17-11-2007.php" ;
второй раз лишний , файл уже считан

   
 
 автор: Владимир55   (17.11.2007 в 16:22)   письмо автору
 
   для: EXP   (17.11.2007 в 16:17)
 

На сколько я знаю, include действует только в течение одного сеанса рнр, так что при начале следующего сеанса его необходимо повторить.

Разве не так?

   
 
 автор: bronenos   (17.11.2007 в 16:27)   письмо автору
 
   для: Владимир55   (17.11.2007 в 16:22)
 

сеанс ограничен не <?php ... ?>, а всем файлом

   
 
 автор: Владимир55   (17.11.2007 в 16:41)   письмо автору
 
   для: bronenos   (17.11.2007 в 16:27)
 

Попробовал, и оказалось именно так, как Вы говорите! Большое спасибо, буду знать. Эта конструкция у меня часто встречается, так что польза от Вашего замечания весьма ощутима!


Но все же, как достичь того, чтобы переписать htm-файл с сохранением значений переменных из подключенного файла?

   
 
 автор: CrazyAngel   (17.11.2007 в 16:51)   письмо автору
 
   для: Владимир55   (17.11.2007 в 15:38)
 


<?php
ob_start
();
?>
<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Долгота дня</title>
</head>
<body>
<p>Восход Солнца:
<?include "17-11-2007.php" ;
echo 
$sun_voshod ;
?>
</p>
<p>Заход Солнца:
<?php
echo $sun_zahod ;
?>
</p>
</body>
</html> 
<?php
$file 
ob_get_contents();
// теперь надо $file записать в файл :)
?>

это типо кеш получается :)

   
 
 автор: Владимир55   (17.11.2007 в 17:09)   письмо автору
 
   для: CrazyAngel   (17.11.2007 в 16:51)
 

Очень интересное решение! И сам принцип очень интересен - его можно будет применить и в других случаях.

Однако есть и одно "но"....

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

А вот бы сделать так, чтобы на специально созданной странице написать соответствующий код, в соответствии с которым была бы взята информация из htm-файла и из php-файла, и из нее сформирован обобщающий htm-код, который бы и записался в новый файл.

Есть ли такая возможность?

(Можно считать информационный рнр-файл в переменную и найти в ней нужные значения, которые и подставить в htm-файл, удалив оттуда инклуд и прочее. Такое решение я себе представляю. А можно ли сделать что-то еще, лучшее?)

   
 
 автор: CrazyAngel   (17.11.2007 в 17:18)   письмо автору
 
   для: CrazyAngel   (17.11.2007 в 16:51)
 

хм... не очень продуманно с include тогда, но можно сделать что-то типо того ...

<?php
$template 
'
<html>
<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Долгота дня</title>
</head>
<body>
<p>Восход Солнца:
#sun_voshod#
</p>
<p>Заход Солнца:
#sun_zahod#
</p>
</body>
</html>'

$arDate = array(
"17-11-2007",
); 
for(
$i=0;$i<count($arDate);$i++):
    include 
$arDate[$i].".php" ;
    
$content str_replace("#sun_voshod#",$sun_voshod,$template);
    
$content str_replace("#sun_zahod#",$sun_zahod,$content); 
    
// далее $content записывайем в файл  $arDate[$i].".html"    
endfor;
?>

   
 
 автор: Владимир55   (17.11.2007 в 17:28)   письмо автору
 
   для: CrazyAngel   (17.11.2007 в 17:18)
 

Да, так должно получиться! Очень интересное решение! Большое спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования