Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание html копии интерпретируемого php файла.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Нужна функция генерирования html файла, какой генерируется соотв. PHP-файлом
Конструктор
Отправлено: 17 Августа, 2011 - 12:49:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




Дано:
1. PHP-файл на странице сайта.
2. При открытии этого файла он соответсвенно дает браузеру нужный Html.
3. Нужно чтобы этот PHP-файл одновременно генерировал на сервере и сохранял копию этого Html файла (который мы видим как исходник страницы у себя в браузере).

Сразу сделать этот html не получается, так как php-файл будет цеплять разные другие для собственной сборки.

(Отредактировано автором: 17 Августа, 2011 - 12:54:11)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 17 Августа, 2011 - 12:59:31
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
Конструктор
Отправлено: 17 Августа, 2011 - 13:34:04
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)





Прочитал статью, может это то что надо, но пример мне кажется чуть перегрузили не нужным материалом..
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function callback($buffer) {
  4.  
  5. // заменить все apples на oranges
  6. return (ereg_replace("apples", "oranges", $buffer));
  7.  
  8. }
  9.  
  10. ob_start("callback");
  11.  
  12. ?>
  13. <html>
  14. <body>
  15. <p>It's like comparing apples to oranges.
  16. </body>
  17. </html>
  18.  
  19. <?PHP
  20.  
  21.  
  22. ?>

Например зачем в нем еще и регулярные выражения?
Еще не понял строчку
Как ее понять? Получается там функции передают имя другой функции как стпроку?
И не совсем понял как работает переменная $buffer. Ведь ей ничего не присваивают, а делают с ней преобразования..

И не совсем понял главного как работает вызов функции ?
тоесть в нем мы включаем буфер вывода?
А зачем передавать ему значение функции?
Ведь в странице этих функций может быть сколько угодно и не известно как они даже називаются...

(Отредактировано автором: 17 Августа, 2011 - 13:57:29)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 17 Августа, 2011 - 13:59:52
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а не перечитать ли вам ее внимательнее?
все же есть в описании
Конструктор пишет:
Получается там функции передают имя другой функции как стпроку?
Цитата:
Может быть специфицирована необязательная функция output_callback. Эта функция принимает строку как параметр и должна возвращать строку. Функция будет вызвана при вызове ob_end_flush(), или если буфер выводится в браузер в конце запроса. Когда вызывается output_callback, она примет содержимое буфера вывода как параметр и по идее должна возвратить новый буфер вывода как результат, который будет направлен в браузер.

Конструктор пишет:
Например зачем в нем еще и регулярные выражения?

с их помощью обрабатывается буфер вывода (изменяется)

в одном вы правы - вам это ненадо
вам главное в начале стартануть буферизацию
в конце записать буфер в файл и отправить в вывод
(Добавление)
Конструктор пишет:
И не совсем понял как работает переменная $buffer. Ведь ей ничего не присваивают, а делают с ней преобразования..
в нее помещается буфер для дальнейшей обработки
 
 Top
Конструктор
Отправлено: 17 Августа, 2011 - 14:09:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




а output_callback и callback это ведь одно и тоже?
просто в коде callback,
а в описании пишут про output_callback. Какую именно нужно использовать?
Или можно даже по-своему обозвать?

Цитата:
Эта функция принимает строку как параметр и должна возвращать строку.

Не свовсем очевидно что значит - возвращает строку.. Я так понял берется пустая переменная, инициализируется, и в конце скрипта этой строке присваевается все что в буфере?

А как быть в моем случае?
У меня может быть так:
PHP:
скопировать код в буфер обмена
  1. <html />
  2. <?PHP .... ?>
  3. <html />
  4. <?PHP .... ?>
  5. <html />
  6. <?PHP .... ?>
  7. <html />
  8. <?PHP .... ?>
  9. <?PHP .... ?>
  10. <?PHP .... ?>

как мне присвоить значение всей страници сразу в переменную $buffer?
вызывать буфер после каждого пхп?

(Отредактировано автором: 17 Августа, 2011 - 14:24:54)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 17 Августа, 2011 - 14:22:10
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




void ob_start ([string output_callback])
знакомая строчка?
научитесь читать краткое описание
[] означает что параметр необязательный
void значит что не возвращает значений (типа процедура)
вам это не надо
string output_callback преобразует вывод перед отправлением
Цитата:
Эта функция принимает строку как параметр и должна возвращать строку.
теперь надеюсь понятно?
повторю- вам это не надо....просто стартуйте без ф-ции
 
 Top
Конструктор
Отправлено: 17 Августа, 2011 - 14:30:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




LIME пишет:
теперь надеюсь понятно?
да ) некоторые вещи стали понятне..
тоесть я пишу так-
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. ob_start();                        /* Стартуем буфер вывода */
  5. начало страницы...
  6. ....
  7. конец страницы
  8. $buffer = ob_get_contents();      /* Копируем буфер вывода в переменную */
  9. ob_end_flush();                         /* Закрываем буфер вывода */
  10.  
  11. $document_root = $_SERVER['DOCUMENT_ROOT'];   /* Записываем все в файл на сервере  */
  12. $fp = fopen($document_root.'/copy_php.html', 'w');    
  13. fwrite($fp, $buffer);
  14. fclose($fp);
  15.  
  16. ?>

таков алгоритм правельный?

(Отредактировано автором: 17 Августа, 2011 - 15:14:04)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
LIME
Отправлено: 17 Августа, 2011 - 14:33:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




да
только еще не забудьте в файл писать
 
 Top
Конструктор
Отправлено: 17 Августа, 2011 - 17:56:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




LIME пишет:
да
только еще не забудьте в файл писать


Все теперь работает,
а никто не подскажет как записать файл в поддиректорию?
тоесть просто файл пишет без проблем,
а как еще создать подпапку и записать уже в нее?
$fp = fopen($document_root.'/xxx/copy_php.html', 'w'); не работает


-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Августа, 2011 - 18:02:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




mkdir
 
 Top
Конструктор
Отправлено: 17 Августа, 2011 - 18:03:47
Post Id



Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Апр. 2010  


Помог: 1 раз(а)




Конструктор пишет:
LIME пишет:
да
только еще не забудьте в файл писать


Все теперь работает,
а никто не подскажет как записать файл в поддиректорию?
тоесть просто файл пишет без проблем,
а как еще создать подпапку и записать уже в нее?
$fp = fopen($document_root.'/xxx/copy_php.html', 'w'); не работает


нашел
mkdir($document_root.'/xxx', 0700);

DeepVarvar спасибо, просто поисковик в данном случае тоже быстро ответил)

(Отредактировано автором: 17 Августа, 2011 - 18:05:27)



-----
Если все время идти вперед, до цели будет немного ближе..
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB