Как вызвать html код с помощью php
Перейти к содержимому

Как вызвать html код с помощью php

  • автор:

Генерация html на PHP

Предлагаю вашему вниманию свое решение по генерации html на PHP. Задача вроде бы тривиальная, но хотелось бы, чтобы это было расширяемо, кратко, но в тоже время с хорошим функционалом. Получилось вроде не плохо.

Сразу скажу( как многие считают в комментариях), что задача ставилось не написать шаблонизатор (которых и так много) и не заменить шаблонизатор JavaScript. Я прекрасно знаю, что true way это разделять html и данные. Но мне понадобилось писать html в классах, для создания компонентов фреймворка, на подобие CGridView в yii, стоит ли в таких местах выносить html в отдельные файлы решать вам.

Основная цель, избавится от html в классах и функциях.

Простой пример, обычная кнопка:

CHtml::create() ->p() ->a(array('href' => 'http://habrahabr.ru', 'class' => 'btn')) ->text('Перейти') ->render(); 

Ничего хитрого, можно было бы этим и ограничется, но захотелось циклы:

 $arr = array('1' => 'Первый', '2' => 'Второй'); CHtml::create() ->select($options) ->each(CHtml::plainArray($arr, 'value', 'text')) ->option('array("value" => $data->value)') ->text('$data->text') ->end() ->endEach() 

Тут понадобилось вызвать функцию plainArray() которая превращает массив в виде:

$arr = array( array('value' => '1', 'text' =>'Первый'), array('value' => '2', 'text' => 'Второй') ); 

Теги внутри цикла могут содержать функции или строки с eval выражениями, вложенность любая, пример с таблицей:

$columns = array( array('id' => 'NAME', 'label' => 'Имя'), array('id' => 'AGE', 'label' => 'Возраст') ); $data = array( array('NAME' => 'Петр', 'AGE' => 29), array('NAME' => 'Василий', 'AGE' => 32) ); CHtml::create() ->table() ->thead() ->tr() ->each($columns) ->th() ->text(function($column)< return $column['label']; >) ->end() ->endEach() ->end() ->end() ->tbody() ->each($data) ->tr() ->each($columns) ->td() ->text(function($row, $column) < return $row[$column['id']]; >) ->end() ->endEach() ->end() ->endEach() ->render(); 

Незакрытые теги закрываются автоматически.

Класс можно расширить, вплоть до использования в формах. Расширить можно за счет наследования или внедрения зависимости, за то, как будет выводится каждый тег и его атрибуты используется одна функция, поэтому можно легко переопределить это поведение.

 class CMyHtml extends CHtml < public function a($options = array()) < $default = array( 'href' =>'javascript:void(0)' ); return parent::a(array_replace($default, $options)); > > 
class CForm < private $_lastLabel = ''; public function __construct(CModel $model, CHtml $html = null) < $this->_model = $model; $this->_html = $html ?: CHtml::create(); > public function __call($method, $ps) < $options = $ps ? $ps[0]: array(); if ($method === 'label') < $this->_lastLabel = isset($options['for']) ? $this->_model->getLabel($options['for']) : ''; > if ($method === 'text' && $this->_lastLabel) < $options = $options ?: $this->_lastLabel; $this->_lastLabel = ''; > $this->_html->$method($options); return $this; > > 

Само решение можно посмотреть и попробовать на github.

Спасибо за внимание.

Как вызвать html код с помощью php

Помогите! Не могу открыть страницу. Хочу чтобы скрипт выполнился и в рез-те открывалась та или иная страница.
Если кто знает, пожалуйста, напишите!

автор: DJ Paltus (14.12.2005 в 15:59) письмо автору
автор: Loki (14.12.2005 в 16:01) письмо автору

$key = 1 ;
if ( $key == 1 )
<
$filename = «index.html» ;
>
else
<
$filename = «about.html» ;
>
$data = file_get_contents ( $filename );
echo $data ;
?>

автор: Juslik (16.12.2005 в 12:12) письмо автору

ПОЛУЧИЛОООООООСЬ.
Спасибо большущее. :))))

автор: cheops (14.12.2005 в 23:49) письмо автору

Страница имеется ввиду локальная или удалённая?

автор: Juslik (16.12.2005 в 12:07) письмо автору

Локальная. Или ссылку. Хоть что-нибудь открыть :))

автор: Amn (10.01.2006 в 20:19)

а если удаленная то на что нужно заменять $filename?

Сборка веб-страницы из частей. Включение кода HTML одного файла в другой

Когда создается сайт, состоящий из многих веб-страниц, то обычно каждая сверстана на том же макете, что другие. У всех одинаковый заголовок сайта (логотип, название веб-ресурса), основная навигация, подвал сайта и, если есть, другие блоки. Веб-документы часто отличаются между собой только содержащимися в них статьями.

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

Например, мы создаем отдельный файл, в котором на языке HTML описываем ссылки меню. Далее в коде каждой веб-страницы пишем одну команду, которая вставляет содержимое меню. Позже, когда потребуется внести изменения в навигацию сайта, надо будет исправить всего один файл. Не придется редактировать все страницы сайта.

Не смотря на очевидную необходимость, данный вопрос не имеет решения исключительно средствами языка HTML. То есть нет команды HTML, которая выполнила бы поставленную задачу целиком и полностью.

Однако проблема решается средствами многих других языков программирования, следовательно у нее нет однозначного решения. Каждый из способов накладывает свои особенности и некоторые сложности в обслуживании сайта. Поэтому если сайт состоит из небольшого количества страниц, то может быть проще оставить все как есть. Кроме того есть программы и утилиты, позволяющие выполнять поиск по содержимому группы текстовых файлов (html-документы к таковым относятся) с последующей заменой контента.

В этом уроке мы рассмотрим два способа включения содержимого одного файла в другой: с помощью JavaScript и PHP. Первый способ удобен тем, что не требует установки веб-сервера на локальном компьютере. Второй – более профессиональный и общепринятый подход.

Пусть мы хотим вынести одинаковые на всех страницах сайта навигационные ссылки в отдельный файл.

Одинаковая часть всех страниц сайта

Создадим файл menu.js и поместим туда ссылки, убрав их из файлов *.html.

Поскольку мы будем включать в веб-документы скрипт JS, то и содержимое menu.js должно быть написано не на языке HTML, а на JavaScript.

В JS есть метод write , который выводит на странице переданный в него текст. Поэтому содержимое файла menu.js может выглядеть так:

document.write('\ Водоросли\ Лишайники\ Моховидные\ ');

Или так, если использовать свойство innerHTML (этот способ может быть предпочтительным):

document.getElementById("sidebar").innerHTML = '\ Водоросли\ Лишайники\ Моховидные'

Обратный слэш используется для экранирования перехода на новую строку (для интерпретатора JS разрыв строки перестает существовать).

В файлах *.html в места, откуда мы убрали ссылки, добавляем наш скрипт:

nav id="sidebar"> script src="menu.js">/script> /nav>

JS-скрипт, вставляющий код HTML

В данном случае выгода от наших манипуляций не очевидна. Но представьте, что меню состоит из сотни ссылок. Убрав его в отдельный файл, вы уменьшите объем кода в основных страницах, что упростит их последующее редактирование.

Хотя это не имеет отношения к теме текущего урока, обратите внимание на скриншот выше, где пункт меню, который ссылается на открытую в браузере страницу, имеет иное оформление. Так пользователю сайта легче понять, на какой странице он находится. В данном случае фокус был реализован с помощью подобного скрипта в конце тела каждого html-документа:

script type="text/javascript"> document.querySelector( 'a[href="lichen.html"]' ).style.background="White"; script>

Скрипт можно сделать универсальным и вынести в отдельный файл, если определять текущую страницу путем извлечения имени файла из ее адреса (код будет сложнее).

Если мы посмотрим на исходный код веб-документа в браузере ( Ctrl + U ), то не увидим здесь ссылок.

Вставка кода HTML с помощь JavaScript не приводит к изменению исходного кода страницы

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

Другое дело, когда мы используем PHP или другой язык программирования. В этом случае скрипт выполняется на стороне сервера. По сети в браузер пользователя передается готовый документ, то есть без вставок кода на языке программирования. Вместо этого там находится результат выполнения этого кода.

К сожалению, чтобы увидеть как работают включения PHP в код HTML, нужен веб-сервер с интерпретатором PHP. Данное ПО можно установить на локальный компьютер, однако в данном курсе мы не будем этого делать. Для этого потребовался бы отдельный урок, в то время как острой необходимости в локальном сервере у нас нет.

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

Однако то, как с помощью PHP собрать веб-страницу из частей, рассмотрим в этом уроке.

Обычно веб-серверы по-умолчанию настроены так, что файлы с расширением *.php обрабатываются интерпретатором PHP, а файлы *.html – нет. Поэтому первое, что мы сделаем – поменяем расширения веб-страниц. Например, было: algae.html, lichen.html, moss.html. Стало: algae.php, lichen.php, moss.php.

Минусом такого подхода является то, что вы не сможете открывать страницы в браузере у себя на компьютере.

Также здесь отметим важный момент с точки зрения продвижения сайта. Адреса https://ваш-домен.зона/algae.html и https://ваш-домен.зона/algae.php разные. Если вы вдруг решите поменять расширения файлов у проиндексированного сайта, то поисковые системы решат, что старые страницы исчезли, появились какие-то новые. Конечно, можно настроить так называемые редиректы. Однако лучше продумывать адресацию на сайте заранее.

С другой стороны, редко когда увидишь, чтобы в адресной строке отображались расширения страниц. Обычно их скрывают. Например, следующие команды в файле .htaccess позволяют обращаться к страницам сайта без их расширения *.php:

RewriteEngine On RewriteCond % !-d RewriteCond %\.php -f RewriteRule ^(.*)$ $1.php

В таком случае веб-страница будет выглядеть как https://ваш-домен.зона/algae. Изменив имена файлов, необходимо изменить адреса в ссылках меню. Пусть они хранятся в файле menu.html. Так как это включаемый файл без кода на PHP, то и расширение можем оставить соответствующее содержимому.

a href="algae">Водоросли/a> a href="lichen">Лишайники/a> a href="moss">Моховидные/a>

В файлах веб-страниц php-включение будет выглядеть так:

nav id="sidebar"> "menu.html"; ?> /nav>

Команда языка PHP здесь include «menu.html» . Она приказывает вставить в документ содержимое указанного файла. Предваряющая ее последовательность символов в конце говорят, что этот код закончился.

Выгрузив все файлы сайта на хостинг и открыв веб-страницу через адресную строку, увидим результат выполнения команды include .

Вставка содержимого HTML-файла с помощью оператора include языка PHP

В нашем примере мы выделили в отдельный файл только меню сайта. Однако так делают в том числе для заголовка сайта, подвала и другого. Таким образом, веб-страница может содержать множество включений кода PHP в разных местах.

X Скрыть Наверх

Введение в веб-разработку и создание сайтов

Как вызвать html код с помощью php

Склонен к самоубийству

Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007

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

Как открыть ХТМЛ файл отдельной страницей средствами ПХП, например я запустил ПХП файл а мне в ответ вылетает 10 разных ХТМЛ ну и ПХП естественно Если не поняли, переспросите — постараюсь обьяснить =)

Отправлено: 03 Мая, 2007 — 19:47:26

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

Ты же знаешь что никому не понять то что ты написал.
Зачем спрашиваешь? Сразу пиши подробней. ..
Отправлено: 04 Мая, 2007 — 19:31:35

Склонен к самоубийству

Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007

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

Хорошо стараюс, есть у меня 10 ХТМЛ файлов, и мне нано способ их запустить через код, вот как я и сказал, запускаю ПХП файл и они запускаются!

Отправлено: 04 Мая, 2007 — 19:41:08

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

То что я понял:
Человек заходит по адресу script.php
ему должны отобразиться содержимое 10 html документов.

include ( ‘page1.html’ ) ;
Отправлено: 04 Мая, 2007 — 19:41:38

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

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

kamikadze пишет:

Хорошо стараюс, есть у меня 10 ХТМЛ файлов, и мне нано способ их запустить через код, вот как я и сказал, запускаю ПХП файл и они запускаются!

Все равно непонятно — как это «запустить 10 XHTML через код». Шаманское заклинание какое-то. Сформулируй задачу конкретно — есть то-то и то-то. А надо получить это и это.

Отправлено: 04 Мая, 2007 — 19:42:50

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

И старайся не использовать терминологию в стиле «нано» .
«Нужно» — и ещё пару словечек написать правильно, и всем всё будет понятно.

Отправлено: 04 Мая, 2007 — 20:55:07

Склонен к самоубийству

Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007

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

Извините еще раз! Есть 10 HTML файлов, и один PHP что нужно прописать в PHP файли чтоб виводилось 10 окон с десятью HTML файлами при вызове PHP (ну всего выходит 11 окон, 10 с HTML страницами и одно с PHP).

Отправлено: 04 Мая, 2007 — 21:02:00

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

Чтоб в браузере открывалось ещё 10 окон ?
Значит во первых вам в клиентскую разработку.
Во вторых: скрипт работает на сервере, и ничего с браузером сделать не может. Страшно представить даже, что было бы, если сервер мог управлять программами на вашем компьютере.
И в третих, открытие новых окон браузера, на JS осуществляется посредством window.open(‘abc.html’);

Отправлено: 04 Мая, 2007 — 21:07:59

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

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

Чисто теоретически такое возможно — кто нам помешает повесить событие onload для тега body. А в обработчике события onload прописать несколько вызовов window.open().

Отправлено: 04 Мая, 2007 — 21:08:43

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

Чёткого понимания задачи я так и не достиг,
но если пользователю откроется 10 окон, то это его последнее посещение вашей страницы и сайта вообщем.

Отправлено: 04 Мая, 2007 — 21:10:56

Склонен к самоубийству

Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007

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

Ну это я сказал в общем! Еще раз ставлю задачу! Человека заходит на PHP страницу, а ему вылетает еще 2 окна с 2 HTML страницами! Как осуществить?

Отправлено: 04 Мая, 2007 — 21:13:08

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

что значит «вылетает» ?
= показывают ?
= загружаются ?

Где? Ещё окно браузера?
Просто вставить текст из двух html страниц в результат выполнения скрипта?

function loadHTML()< window.open('html_page_1.htm'); window.open('html_page_2.htm'); Отправлено: 04 Мая, 2007 - 21:15:54

Склонен к самоубийству

Покинул форум
Сообщений всего: 391
Дата рег-ции: Янв. 2007

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

Знаете иногда на яве открывается второе окно при загрузке какой-то страници в качестве рекламы, дак как сделать средствами ПХП такое?\n\n(Добавление)
ДА вот такое, но на ПХП нельзя так?

Отправлено: 04 Мая, 2007 — 21:20:00

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

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

Вот. Вот что спрашивать надо

Цитата:

Знаете иногда на яве открывается второе окно при загрузке какой-то страници в качестве рекламы, дак как сделать средствами ПХП такое?

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

Отправлено: 04 Мая, 2007 — 21:21:54

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

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

valenok пишет:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *