In PHP, what does »
@Imray as far as I can remember, you can put single and double quotes into the heredoc as well as variables and everything will work. If you want to use double quotes in your echo statement, you would have to escape them. Still, I stopped using heredoc pretty soon after I started, because I didn’t like breaking my indentation patterns for it. Now I form many of my strings as arrays that I later implode(«\n»,$string_array) .
Jul 21, 2014 at 21:27
I’d argue that it is pretty useful if you want to inject different languages. Being able to use newlines without concatenation (which might break code completion etc.) is really nice.
Oct 2, 2017 at 1:03
This is called a heredoc, and it lets you do a long piece of text that goes over several lines. You can put PHP variables in there and they will replace with the value. The word CHART can be anything. It just needs to be the same to start and stop where the quoted text begins.
You could do the same thing by appending multiple quoted strings, but this is cleaner most of the time for extended documents like this HTML text. There is also something called a nowdoc which is like a single quote string in PHP, but these won’t let you use variables inside them.
30.7k 22 22 gold badges 106 106 silver badges 131 131 bronze badges
answered Jun 18, 2012 at 22:37
hackartist hackartist
5,192 4 4 gold badges 34 34 silver badges 49 49 bronze badges
Oh okay, thanks. instead of searching a long time I figured I would just ask a quick question
Jun 18, 2012 at 22:40
It is the start of a string that uses the HEREDOC syntax.
A third way to delimit strings is the heredoc syntax:
After this operator, an identifier is provided, then a newline. The string itself follows, and then the same identifier again to close the quotation.
1 1 1 silver badge
answered Sep 13, 2010 at 11:42
444k 144 144 gold badges 974 974 silver badges 1090 1090 bronze badges
Cool, I didn’t know that one. I read the link you sent and honestly, I understand why I could live without that one so far! 😉 What would be the advantage of using that for a string?
Sep 13, 2010 at 11:48
@Gabriel it allows you to use both kinds of quotations inside the string without breaking it:
Sep 13, 2010 at 11:51
@YiJiang that was actually because of the german localization! Damn geolocation, always gives me the wrong link even though english is my browser language. Corrected, cheers 🙂
Sep 13, 2010 at 12:03
@Gabriel you’re welcome. @Hugo does have a point, though, there are situations where they do make sense and help make the code more readable. But the missing indenting capability takes a lot away at least in my practice
Sep 13, 2010 at 14:07
30.7k 22 22 gold badges 106 106 silver badges 131 131 bronze badges
answered Sep 13, 2010 at 11:42
448k 82 82 gold badges 494 494 silver badges 529 529 bronze badges
It’s a heredoc, for long strings that you don’t have to worry about quotation marks and whatnot. If you notice the word CHART and then there’s a line that says CHART;, that indicates the end of the string.
The important thing to remember when using this format is that whatever string you use to define the end of the string (such as CHART in this case), that word has to appear on a line on its own, followed by a semicolon, and NO characters can occur after the semicolon on the same line, even whitespace, otherwise PHP thinks it’s part of the string.
Установка PHP. Установка XAMPP
Для работы с PHP необходимо иметь следующее программное обеспечение:
веб-сервер, поддерживающий PHP (мы будем использовать Apache);
сервер базы данных (мы будем использовать MySQL).
Новичкам не советуется устанавливать все эти компоненты отдельно, потому что их подключение может оказаться сложным. Проще установить комплексный программный пакет, включающий PHP, веб-сервер и сервер базы данных — XAMPP.
Установка XAMPP в Windows
XAMPP — это бесплатная кроссплатформенная сборка веб-сервера, содержащая Apache, MySQL, интерпретатор скриптов PHP, язык программирования Perl и большое количество дополнительных библиотек, позволяющих запустить полноценный веб-сервер.
Чтобы установить XAMPP, нужно перейти на официальный сайт XAMPP и загрузить установочный файл для Windows.
Шаг №1: Запустите установочный файл, чтобы начать установку XAMPP:
Шаг №2: Выберите компоненты, которые нужно установить — Apache, MySQL, PHP, phpMyAdmin. Все остальное можно не устанавливать. Затем нажмите кнопку Next, чтобы перейти к следующему шагу.

Шаг №3: Выберите папку для установки XAMPP.

Шаг №4: Выберите язык для панели управления XAMPP. По умолчанию используется английский.

Шаг №5: Нажмите кнопку Next, чтобы начать установку. Это займет несколько минут.

Шаг №6: После завершения мастер установки XAMPP отобразит следующее окно. После нажатия кнопки Finish откроется панель управления XAMPP.

Шаг №7: В панели управления перечислены установленные службы. Для запуска соответствующей службы нужно нажать кнопку Start:

Ниже показано, что веб-сервер Apache и MySQL запущены. Apache прослушивает порты 80 и 443, а MySQL прослушивает порт 3306:

Шаг №8: Откройте веб-браузер и перейдите по следующему URL-адресу: http://localhost/ . Если установка завершена успешно, вы увидите экран приветствия XAMPP.
Возможные ошибки
По умолчанию Apache использует порт 80. Однако, если порт используется другой службой (например, Skype), вы получите следующее сообщение об ошибке:
Problem detected!
Port 80 in use by «Unable to open process» with PID 4!
Apache WILL NOT start without the configured ports free!
You need to uninstall/disable/reconfigure the blocking application
or reconfigure Apache and the Control Panel to listen on a different port
В этом случае вам нужно изменить порт с 80 на свободный, например, 8080. Для этого нажмите кнопку Config для модуля Apache:

Затем найдите строку с текстом Listen 80 и измените порт с 80 на 8080 следующим образом:

После этого нажмите кнопку Start, чтобы запустить службу Apache. Если порт свободен, Apache должен запуститься корректно.
Базовая конфигурация веб-сервера XAMPP
Предполагается, что вы установили XAMPP на диск C: в Windows. Ниже приведен список основных каталогов, о которых стоит знать:

htdocs — это корневой веб-каталог, в котором размещаются все PHP-проекты.
mysql — этот каталог содержит всю информацию, относящуюся к СУБД MySQL. По умолчанию он работает на порту 3306.
php — этот каталог содержит установочные файлы PHP. В нем находится файл под названием php.ini, который используется для настройки PHP на сервере.
Панель управления XAMPP
Панель управления может быть использована для:
установки и удаления служб, таких как Apache, MySQL и др., установленных через XAMPP;
запуска и остановки служб;
открытия конфигурационных файлов.
Чтобы открыть панель управления сервером откройте папку, в которой установлен XAMPP и запустите файл с названием xampp-control.exe.

Блок №1: Здесь перечислены установленные службы, модули и идентификаторы процессов (PID). Зеленая галочка означает, что модуль был установлен как служба. Красный крестик означает, что он не был установлен как служба (на скрине Apache и MySQL не установлены как службы).
Блок №2: Здесь показаны порты, связанные с модулями. Возможные действия:
запуск и остановка модулей;
открытие административного окна для Apache и MySQL;
открытие файла конфигурации;
просмотр лог-файлов для модулей.
Блок №3: Этот раздел содержит полезные утилиты, такие как Netstat, ярлыки служб Windows и др.
Блок №4: Здесь отображается информация о состоянии модулей.
Популярные IDE для PHP
Интегрированная среда разработки (сокр. «IDE» от англ. «Integrated Development Environment») — это программное обеспечение, которое содержит всё необходимое для написания кода и разработки проектов. IDE часто оснащены функциями подсветки синтаксиса и автодополнения кода.
Примечание: Блокнот также можно использовать для написания и редактирования PHP-кода, однако недостаток использования такого «редактора» заключается в том, что отладка кода становится сложной, поскольку сложно обнаружить ошибки: опечатки в ключевых словах, незакрытые фигурные скобки и т.д.
| IDE | Лицензия | Краткое описание |
| Netbeans IDE | Open Source | Подсветка синтаксиса, автодополнение кода и история изменений. Поддерживает Zend, SFTP, FTP, SVN. |
| Dreamweaver | Commercial | Поддерживает HTML и PHP. Подсветка синтаксиса и автодополнение кода. Поддержка SFTP и FTP. |
| Zend studio | Commercial | Интегрирован с Zend Server, Zend Framework, PHPUnit, phpDocumentor. Имеет подсветку синтаксиса. |
| PHP Eclipse | Open Source | Подключаемый модуль разработки PHP для Eclipse IDE Framework. |
| Visual Studio Code | Commercial | Легковесный редактор кода, который имеет большое количество плагинов для всех языков программирования, включая PHP. |
| PhpStorm | Commercial | Мощная IDE для эффективной разработки. Имеет 30-дневную пробную версию. |
Настройка параметра HTTP charset
Когда сервер отправляет документ клиентскому приложению (например, браузер), он также отправляет информацию в поле Content-Type сообщая заголовок HTTP о том, какой это тип данных. Эта информация выражается с помощью отметки MIME. Эта статья должна стать отправной точкой для тех, кто должен установить информацию о кодировке в заголовке HTTP.
Параметр charset
Документы, переданные с HTTP, которые имеют следующие типы текста: text/html, text/plain, и т.д., могут послать charset параметр к заголовку HTTP, чтобы указать кодировку символов документа.
Это очень важно всегда явно отмечать Веб документы. В HTTP 1.1 говорится, что по умолчанию charset должен быть ISO-8859-1. Но есть очень много неотмеченных документов в других кодировках, поэтому когда нет явного параметра charset браузеры используют то кодирование, которое предпочитает читатель.
Обычно строка в заголовке HTTP выглядит следующим образом:
Content-Type: text/html; charset=utf-8
Установка сервера
Как сделать так, чтобы сервер посылал соответствующую charset информацию зависит от сервера. Чтобы иметь возможность изменять настройки сервера вам понадобятся соответствующие административные права.
Apache. Это можно сделать с помощью AddCharset (Apache 1.3.10 и позднейшие) или директив AddType для каталогов или отдельных ресурсов (файлов). С помощью AddDefaultCharset (Apache 1.3.12 и позднейшие), можно установить параметр charset по умолчанию для всего сервера. Дополнительные сведения смотрите в статье Настройка ‘charset’ информации в .htaccess.
Jigsaw. Используйте indexer в JigAdmin , чтобы связать расширения с charset, или установить charset непосредственно на ресурсе .
IIS 5 и 6. В Internet Services Manager, щелкните правой кнопкой мыши «Default Web Site» (или сайт, который нужно настроить) и перейдите к «Properties» => «HTTP Headers» => «File Types. » => «New Type. «. Поставьте расширение, которое вы хотите отобразить, отдельно для каждого расширения; вероятно пользователи IIS захотят, отобразить .htm, .html. Тогда добавьте к Content type » text/html;charset=utf-8 » (без кавычек; замените желаемый вами charset на iso-8859-1; нигде не оставляйте пробелы, поскольку IIS игнорирует весь текст после пробелов). Для IIS 4, вам возможно, придется использовать «HTTP Headers» => «Creating a Custom HTTP Header» если выше указанная схема не работает.
Скриптовий заголовок
Соответствующий заголовок можно также установить в server side scripting languages (скриптовые языки сервера). Например:
Perl. Выведите правильный заголовок перед любой частью текущей страницы. После последнего заголовка, используйте двойной linebreak (разрыв строки), например:
print «Content-Type: text/html; charset=utf-8\n\n»;
Python. Используйте то же решение, что и для Perl (кроме того, что в конце вам не нужно использовать точку с запятой).
PHP. Перед созданием любого контента используйте функцию header(), например:
header(‘Content-type: text/html; charset=utf-8’);
Java Servlets. Используйте setContentType метод на ServletResponse до получения любого объекта (Stream или Writer) использованного для вывода, например:
resource.setContentType («text/html;charset=utf-8»);
Если вы используете Writer, Servlet автоматически заботится о преобразовании с Java Строк в избранное кодирование.
JSP. Используйте директиву page например:
Выводит из out.println() или выраженные элементы ( ) автоматически превращаются в избранное кодирование. Кроме того, сама страница интерпретируется, как закодированная в этой кодировке.
ASP и ASP.Net. ContentType и charset устанавливаются независимо, и есть методы для соответствующего объекта. Чтобы установить charset, используйте например:
В ASP.Net, настройки Response.ContentEncoding будет влиять на параметр charset в HTTP Content-Type так же как отправленное фактическое кодирование документа (которое, конечно, должно быть таким же). По умолчанию может быть установлено в элементе globalization в Web.config (или Machine.config , которое первоначально установленно в UTF-8).
Дополнительные материалы
- Настройка charset информации в .htaccess
- Проверка заголовков HTTP
- Пособие, Обработка кодирования символов в HTML и CSS
- Ссылки по теме, Настройка сервера
- Символы
- Настройка параметра HTTP charset
- Символы
- Символы
strtotime
Первым параметром функции должна быть строка с датой на английском языке, которая будет преобразована в метку времени Unix (количество секунд, прошедших с 1 января 1970 г. 00:00:00 UTC) относительно метки времени, переданной в now , или текущего времени, если аргумент now опущен.
Каждый параметр функции использует временную метку по умолчанию, пока она не указана в этом параметре напрямую. Будьте внимательны и не используйте различные временные метки в параметрах, если на то нет прямой необходимости. Обратите внимание на date_default_timezone_get() для задания временной зоны различными способами.
Список параметров
Строка даты/времени. Объяснение корректных форматов дано в Форматы даты и времени.
Временная метка, используемая в качестве базы для вычисления относительных дат.
Возвращаемые значения
Возвращает временную метку в случае успеха, иначе возвращается FALSE . До версии PHP 5.1.0 в случае ошибки эта функция возвращала -1.
Ошибки
Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE , и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ . Смотрите также date_default_timezone_set()
Список изменений
Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .
Примеры
Пример #1 Пример использования функции strtotime()
echo strtotime ( «now» ), «\n» ;
echo strtotime ( «10 September 2000» ), «\n» ;
echo strtotime ( «+1 day» ), «\n» ;
echo strtotime ( «+1 week» ), «\n» ;
echo strtotime ( «+1 week 2 days 4 hours 2 seconds» ), «\n» ;
echo strtotime ( «next Thursday» ), «\n» ;
echo strtotime ( «last Monday» ), «\n» ;
?>?phpПример #2 Проверка ошибок
// до версии PHP 5.1.0 вместо false необходимо было сравнивать со значением -1
if (( $timestamp = strtotime ( $str )) === false ) echo «Строка ( $str ) недопустима» ;
> else echo » $str == » . date ( ‘l dS \o\f F Y h:i:s A’ , $timestamp );
>
?>Примечания
Замечание:
Если количество лет указано двумя цифрами, то значения 00-69 будут считаться 2000-2069, а 70-99 — 1970-1999. Смотрите также замечания ниже о возможных различиях на 32-битных системах (допустимые даты заканчиваются 2038-01-19 03:14:07).
Замечание:
Корректным диапазоном временных меток обычно являются даты с 13 декабря 1901 20:45:54 UTC по 19 января 2038 03:14:07 UTC. (Эти даты соответствуют минимальному и максимальному значению 32-битового знакового целого).
До версии PHP 5.1.0, не все платформы поддерживают отрицательные метки времени, поэтому поддерживаемый диапазон дат может быть ограничен Эпохой Unix. Это означает, что даты ранее 1 января 1970 г. не будут работать в Windows, некоторых дистрибутивах Linux и нескольких других операционных системах.
В 64-битных версиях PHP корректный диапазон временных меток фактически бесконечен, так как 64 битов хватит для представления приблизительно 293 миллиарда лет в обоих направлениях.
Замечание:
Даты в формате m/d/y или d-m-y разрешают неоднозначность с помощью анализа разделителей их элементов: если разделителем является слеш (/), то дата интерпретируется в американском формате m/d/y, если же разделителем является дефис (—) или точка (.), то подразумевается использование европейского форматаd-m-y.
Чтобы избежать потенциальной неоднозначности, рекомендуется использовать даты в формате стандарта ISO 8601 (YYYY-MM-DD) либо пользоваться функцией DateTime::createFromFormat() там, где это возможно.
Замечание:
Не рекомендуется использовать эту функцию для математических операций. Целесообразней использовать DateTime::add() и DateTime::sub() начиная с PHP 5.3, или DateTime::modify() в PHP 5.2.
Смотрите также
- Форматы даты и времени
- DateTime::createFromFormat() — Создает и возвращает экземпляр класса DateTime, соответствующий заданному формату
- checkdate() — Проверяет корректность даты по григорианскому календарю
- strptime() — Разбирает строку даты/времени сгенерированную функцией strftime
