Как побывали на базаре: PHP или HTML – что лучше? Парсинг HTML и скрепинг с помощью простой библиотеки HTML DOM

23.04.2019

Если вы только что столкнулись с PHP, то вам нужно знать некоторые определения.
Прежде всего, PHP – это язык программирования и служит он для написания команд (сценариев), адресованных серверу. Если говорить ещё проще, то при помощи PHP мы можем общаться с сервером.
Команды PHP легко внедряются в HTML страницы. Именно это свойство является важным преимуществом языка PHP перед такими языками, как Perl и C.

Синтаксис PHP

PHP код сценария начинается после открывающего тэга . Текст между этими двумя тэгами считывается программой , находящейся на сервере, а в HTML-документ выводится полученный результат. Рассмотрим на примере:



Пример

include ("sidebar.htm") ;
?>


Если нам нужно что-то вставить в html код страницы необходимо использовать команду include (вставить). Далее указываем адрес файла, а заканчивается строка, как и в CSS ;

Вставляем HTML код в страницы сайта

Как правило боковые колонки (sidebar ) и подвал (footer ) остаются неизменными на всех страницах сайта. Следовательно коды

.....
и можно вынести в отдельные htm страницы "sidebar.htm" и "footer.htm" и вставлять в страницы сайта при помощи команды include . Если при этом вынести в отдельный файл и главное содержимое -
.....
, то код нашей страницы будет иметь вид:



Пример

include ("sidebar.htm") ;
include ("content.htm") ;
include ("footer.htm") ;
?>


содержимое sidebar.htm


здесь
содержимое
Вашего
сайд-бара

Аналогично с файлами content.htm и footer.htm .

При такой генерации страниц Вам достаточно внести изменения в один файл "sidebar.htm" , что бы изменились все страницы сайта. Что очень удобно если Ваш сайт состоит из сотни или тысячи страниц.

PHP на Вашем компьютере

Чтобы Вы могли работать с PHP-скриптами и просматривать результаты выполнения в браузере, вам нужно установить работающий веб сервер с PHP на Вашем локальном компьютере.
Лучше всего для таких задач подойдёт Денвер . (официальный сайт предоставляет всё необходимое бесплатно ) В комплект установки входит - Apache, php и MySQL. Другими словами на Вашем компьютере будет находиться полнофункциональный сервер для хостинга сайтов .

Для того, что бы PHP код работал в HTML страницах необходимо открыть файл .htaccess в любом текстовом редакторе и прописать следующее:

AddHandler application/x-httpd-php .html

Данная запись разрешает выполнение PHP скриптов в HTML страницах.

Или изменить расширение файла.html на.php

Возможности PHP

PHP способен не только выдавать HTML. Возможности PHP включают формирование изображений, файлов PDF и даже роликов Flash (с использованием libswf и Ming), создаваемых "на лету". PHP также способен выдавать любые текстовые данные, такие, как XHTML и другие XML-файлы. PHP способен осуществлять автоматическую генерацию таких файлов и сохранять их в файловой системе вашего сервера, вместо того, чтобы отдавать клиенту, организуя, таким образом, кеш динамического содержания, расположенный на стороне сервера.

Одним из значительных преимуществ PHP является поддержка широкого круга баз данных. Словом, PHP может предложить вам очень многое! Подробно о преимуществах PHP можно ознакомиться на www.php.su .

February 1, 2015

От автора: PHP или HTML – что лучше? Никогда не задавайте такого вопроса профессионалу. Во-первых, в его глазах вы сразу «упадете» до уровня полнейшего «чайника». А во вторых… Такой вопрос может возникнуть только у полнейшего «чайного сервиза». Ну, значит сегодня у нас «чаепитие», посвященное этой странной теме.

Курица, яйцо – кто первый?

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

Для начала выясним, что собой представляет современный сайт. Чтобы долго не «шнырять» около да вокруг, сразу сведения. Сейчас любой веб-ресурс создается с помощью четырех технологий:

HTML – он (как и ранее) служит для разметки страниц на составляющие элементы.

CSS – отвечает за внешний вид сайта.

JavaScript – обеспечивает взаимодействие UI (пользовательского интерфейса) с человеком.

PHP – обеспечивает динамическое создание ресурсов и все вытекающие из этого «последствия»: CMS, плагины под них и т.д.

Да, чуть не забыл о еще MySQL. Это СУБД такая . Думаете, издеваюсь? Да нет! Просто тема у нас такая «чайная» — чем отличается HTMLот PHP. Я бы за эти вопросы Шнобелевские премии раздавал (такие есть).

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

Различия на примерах

Устные доводы о приоритетности и различии двух дисциплин можно приводить бесконечно долго. Лучше отличия PHP от HTML разобрать на конкретных примерах. Выясним, в каком из вариантов будет легче поменять цвет фона.

Есть такой очень популярный движок, который называется WordPress. Он работает на PHP. Для сравнения, возьмем разметку обычной веб-страницы и попытаемся в ней изменить фоновый цвет. Затем то же самое реализуем с помощью админки CMS.

Чтобы лучше уяснить, чем отличаются HTML и PHP, постарайтесь найти в этом коде строку, отвечающую за цвет фона. Сразу подскажу, что ее здесь нет. Это стилевое свойство (background-color) нужно прописать. При этом надо знать, где его добавлять. А весь сайт состоит не из одной страницы, а десятков.

Теперь сделаем то же самое через административную панель WordPress. Для этого нам нужно перейти в визуальный редактор страницы и в установленной теме поменять соответствующий параметр путем нажатия нескольких кнопок.

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

Рассмотрим обычный HTML-сайт

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


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

Но как показывает опыт, только единицы справляется с этой задачей, и их сайты продолжают расти и развиваться.

А что же со всеми остальными?

Кто-то копается в Интернете, кто-то пытается покупать бумажные книги. Но без базовых знаний устройства подобных языков программирования, без понимания основ сайтостроения такие попытки обычно заканчиваются ничем.

С другой стороны давайте посмотрим на сайт, сделанный с использованием связки обычного HTML и простого языка программирования для web — PHP.

Самое главное отличие этого сайта от предыдущего в том, что такой сайт можно создавать как конструктор из блоков. Сделали шапку сайта – поместили её в отдельный фаил, сделали левый блок с навигацией по сайту – поместили в отдельный файл и т.д.

Что это нам дает?

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

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

— Сайт занимает меньше места;
— Упрощается резервное копирование данных;
— Облегчается изменение любых данных;
— Становится возможным подсчет любой информации (сколько раз посмотрели страницу, скачали файл, добавили комментариев и т.д.);
— На сайте можно использовать множество готовых PHP скриптов;
— и т.д.

HTML или PHP

Если провести аналогию между HTML и PHP сайтами с автомобилями, то как современные автомобили стали комфортнее, мощнее, функциональнее и при этом стали потреблять топлива меньше чем аналоги 50-й давности, так и PHP сайт стал легче, функциональнее, проще в управлении и мобильнее чем его HTML оппонент.

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

Евгений Попов – Автор 22,5 часового видеокурса «Все Технические Моменты Онлайн Бизнеса в Видеоформате 2 или PHP+MySQL для начинающих «, в котором прямо на экране Вашего компьютера с голосовыми пояснениями показывается весь процесс создания PHP сайта с нуля.

Я многому научился о том, как работают структуры MVC, оглядываясь и изучая существующие. Кажется, что каждая инфраструктура, которую я вижу, имеет макет, где каждый метод в каждом контроллере имеет свой собственный файл шаблона. Таким образом, будет шаблон входа, шаблон выхода, регистр и т.д. И т.д.

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

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

$title = "Blah Blah Blah"; $user = "Jon Miller"; include "index.phtml"; <?php echo $title; ?>

login form

Я делал это

$title = "Blah Blah Blah"; include "header.phtml"; $user = "Jon Miller"; include "user.phtml"; include "login_form.phtml"; include "footer.phtml"; header.phtml <?php echo $title; ?> user.phtml

login_form.phtml
login form
footer.phtml

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

4 ответов

Одно слово: Организация. Разделение каждой части страницы позволит каждому из них просматривать/редактировать отдельно. Эта простая концепция очень полезна. Например, любой человек в команде, который хочет обработать процесс входа в систему, может легко понять, что им нужно отредактировать login_form.phtml , и они могут быть уверены, что редактирование login_form.phtml будет менее вероятно непреднамеренно вмешиваться в другие функции.

Как лучше всего, вот как я это делаю (не совсем, но похоже).

$Title = "Blah Blah Blah"; $User = "Jon Miller"; $ThemeName = "MyGreenPage"; $Contents = array("User", "Login_Form"); function Include($FileName) { if (file_exists($FileName)) include $FileName; }

MyGreenPage.phtml:

<?php echo $title; ?>

User.pcss:

/* Some styles needed by User */

User.pjs:

/* Some script needed by User */

User.phtml:

Login_Form.pcss:

/* Some styles needed by Login_Form */

Login_Form.pjs:

/* Some script needed by Login_Form */

login_form.phtml:

login form

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

Вы должны проверить понятия макеты "и" просмотр помощников . Хотя я связан с версией этих концепций Zend Framework, другие структуры MVC (и концепция MVC) также должны иметь их.

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

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

Двухступенчатый метод "include" работает лучше, чем линейное включение частей (включая заголовок, затем контент, затем нижний колонтитул - то, что вы делаете сейчас), потому что вашим шаблонам не нужно разделить HTML-теги. Руководство Zend имеет хороший визуальный пример шаблонов представлений в макете.

Самый распространенный способ создания шаблонов HTML с помощью PHP - использовать один из этих популярных шаблонов:

Кроме того, вы можете просто помещать заполнители в свой HTML, которые выглядят как <% variablename %> . Просто загрузите свой HTML-код, выполните регулярное выражение, найдите все заполнители и замените их соответствующими переменными.

В качестве альтернативы вы можете загрузить свой HTML, проанализировать его как документ DOM , а затем изменить свой DOM. Я создал библиотеку

Во время работы над обновлением сайтов, обратил внимание на свою старую вёрстку, когда ещё плохо был знаком с php. С учетом приобретённого опыта видны недостатки старого метода вёрстки, когда HTML обрамляет PHP, а не находится внутри него.

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

Рассмотрю преимущества нахождения HTML внутри PHP на примере вывода заголовка в WordPress.

Ниже конструкция из кода следующего типа: если имеются данные в определенном произвольном поле, то выводим заголовок с этими данными. Я взял код верстки в его первозданном виде, такой какой он был раньше. Выглядел он так:

< ! -- Title -- >

< h3 class = "archive-entry-title" itemprop = "name" > < a href = " " rel = "bookmark" title = " " > ID , "name_rus" , true ) ) : ?> ID , "name_rus" , true ) ; ?> < / a > < / h3 >

< ! -- Title End -- >

В такой конструкции кода есть несколько недостатков. Во-первых он не наглядный – всё написано в одну строчку. Сделано это специально, для того чтобы не было пустых пробелов между тегами H1, H2, H3. Ведь ничего хорошего нет в том, если в тегах заголовка будут пробелы. Нельзя предсказать, как в этом случае, среди поисковых систем, подобное скажется на сайте. Будут ли лишние пробелы уменьшать силу заголовка или нет. Учитывая что ответов на такой вопрос нет, следует предположить худшее. А потому писать слитно.

Иначе, в продолжении сказанного, если сделать вышеприведенный код наглядным:

< ! -- Title -- >

< h3 class = "archive-entry-title" itemprop = "name" >

< a href = " " rel = "bookmark" title = " " >

ID , "name_rus" , true ) ) : ?>

ID , "name_rus" , true ) ; ?>

< / a >

< / h3 >

< ! -- Title End -- >

То при просмотре в браузере HTML кода страницы в заголовке тегов h3 увидим следующее:

Нам же нужно и чтобы код читался легко при редактировании и чтобы потом он также слитно отображался при загрузке сайта. А именно чтобы он выглядел таким образом:

Для этого следует воспользоваться PHP и завернуть весь html код в него. И получаем следующий вид php кода для заголовка WordPress:

< ! -- Title -- >

Похожие статьи