Выставляем кодировку UTF-8

utf8 php html

На сколько бы это глупо не казалось, но для удачного выставления кодировки необходимо выполнить целых 11(!) правил.
Хочу зарание предупредить, если какая-то из настроек в .htaccess повлечет за собой ошибку 500, это значит, что хостинг запретил менять этот параметр на сервере. В таком случае проверьте тот факт, что у Вас UTF-8 и в случае чего обратитесь к админам хостинга.
И для тех, кто попал на эту страницу с вопросами об Ajax: Ajax работает в кодировке UTF-8.

Правило №1: Указываем в HTML верстке в теге первой строчкой, кроме случаев, где мы будем использовать тег , так как он так же как и кодировка имеет приоритет над расположением, следующий код:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Правило №2: Указываем кодировку для PHP и самого файла, для этого нам необходимо выставить заголовок функцией header(). Выставляем его в самом начале нашего файла (абсолютно в самом начале), сразу после указания уровня вывода ошибок:

<?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');

Правило №3: Кодировка для подключения к к БД MySQL. Устанавливается после подключения к БД и выбора бд (mysql_connect, mysql_select_db). Если у нас модуль mysql:

<?php
mysql_set_charset('utf8');

или улучшенный модуль mysqli: 

<?php
$mysqli->set_charset("utf8");

Правило №4: Кодировка в .htaccess:

AddDefaultCharset UTF-8

Правило №5: Кодировка для библиотеки mb, начиная с версии php 5.4 можно не указывать, так как по умолчанию будет использоваться именно UTF-8. Ну а пока прописываем её в файле .htaccess:

php_value mbstring.internal_encoding UTF-8

Либо в самом PHP, что в итоге выполнит одни и те же действия:

mb_internal_encoding("UTF-8");

Правило №6: При сохранении файлов (обязательно ВСЕХ!) выбрать кодировку UTF-8 without BOM, повторюсь, without BOM — это необходимая настройка, в противном случае Ваш сайт не будет работать как надо. Для тех, кто пользуется удобной программой DreamWeaver: 
Modify => Page Properties => Title/Encoding и выставляем «Encoding: UTF-8», после чего нажимаем ReLoad, убираем галочку с BOM «Include Unicode Signature (BOM)». Apply + OK.
Модификации => Свойства страницы => Заголовок/Кодировка и выставляем кодировку UTF-8. Нажимаем «перезагрузить», убрали галочку с Подключить Юникод Сигнатуры (BOM). Применить и OK.

Правило №7: если на данный момент какой-то из текстов был введён на странице или в БД — его необходимо перенабрать. Дело в том, что символ в одной кодировке представляет один набор бит для русских символов, а в другой — другой. Именно поэтому необходимо его либо перенабрать, либо перекодировать. Современные программы имеют возможность перевести текст из одной кодировки в другую. Об этой возможности интересуйтесь в мануалах Ваших программ.

Правило №8: Есть исключение, когда текст приходит к Вам на страницу с другого сайта в другой кодировке. Тогда на PHP есть удобная функция для перевода из одной кодировки в другую:

<?php
$var = iconv('utf-8', 'windows-1251', $var); //для переменной $var

Правило №9: Для строковых функций strlen, substr, необходимо использовать их аналоги на библиотеке mb_, а именно: mb_strlen, mb_substr, то есть к функции дописываем mb_ .

Правило №10: Для работы с регулярными выражениями необходимо указывать модификатор u . Это обязательный параметр!

Правило №11: Для CSS файлов указывается кодировка так:

@charset "utf-8";

В заключение скажу, что символы в кодировке WIN-1251 состоят из 1 байта, то есть 8 бит, а в свою очередь в кодировке UTF-8 символы могут состоять от 1 до 4 байт, всё дело в том, что кодировка UTF-8 позволяет создавать мультиязычные сайты, так как все существующие в мире символы в ней присутствуют.
Ради любопытства русская буква в кодировке UTF-8 занимает 2 байта, именно поэтому за 1 символ функция strlen возвращает длину 2, то есть 2 байта, а mb_strlen возвращает уже правильную длину в 1 символ.

0

Выводим список файлов в папке

Первый и самый простой способ — это функция glob(). Она позволяет выводить список всех фалов или по заданному условию. Подробнее читайте ТУТ.
Например, чтобы вывести список всех файлов, нам нужно прописать:

foreach (glob("*.*") as $filename) {
    echo "$filename размер " . filesize($filename) . "<br>";
}

Боле сложный, но гибкий вариант, это работа функциями:

opendir() — Открывает каталог
readdir() — Получает элемент каталога
closedir() — Закрывает каталог
is_dir() — проверяет, является ли элемент папкой

Вот как это работает:

$dir  = 'files//';
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while ($file = readdir($dh)) {
            echo "файл: $file <BR>";
        }
        closedir($dh);
    }
}

Но все то же может выполнять одна единственная функция.

scandir() — Получает список файлов и каталогов, расположенных по указанному пути. Кроме того, ей можно передавать параметр сортировки: 0 — по возрастанию и 1 — по убыванию. Если этот параметр не указать, то по умолчанию будет 0.

$dir  = 'files/';
  $files = scandir($dir,1 );
  foreach ($files as $file){
    echo "<li><a href='$dir$file'>$file</a></li> <br>";
  }

Вы уже заметили, что появляются непонятные точки перед списком файлов, чтобы их убрать, используем такой вариант:

$dir  = 'files/';
//пропускаем точки
$skip = array('.', '..');
$files = scandir($dir);
foreach($files as $file) {
    if(!in_array($file, $skip))
        echo $file . '<br />';
}

И последним способом на сегодня будет dir — Возвращает экземпляр класса Directory. ООП мы еще не рассматривали, но это не мешает попробовать и этот вариант.

$d = dir("files/");
echo "Дескриптор: " . $d->handle . "<br>";
echo "Путь: " . $d->path . "<br>";
while (false !== ($entry = $d->read())) {
   echo $entry."<br>";
}
$d->close();
0

Краткая история PHP

История PHP начинается с 1995 года, когда независимый программист контрактник по имени Расмус Лердорф (Rasmus Lerdorf) написал сценарий Perl/CGI для подсчета количества посетителей сайта, прочитавших его онлайновое резюме.

Его сценарий решал две задачи: регистрацию данных посетителя и вывод количества посетителей на web-странице. Развитие WWW еще только начиналось, никаких специальных средств для решения этих задач не было, и к авторы хлынул поток сообщений с вопросами.

Лердорф начал бесплатно раздавать свой инструментарий, названный Personal Home Page (PHP) или Hypertext Processor ( гипертекстовый процессор ).

Шумный успех инструментария PHP заставил Лердорфа приступить к разработке расширений PHP. Одно из расширений преобразовывало данные, введенные на форме HTML, в символические переменные, что позволяло экспортировать их в другие системы.

Чтобы добиться поставленной цели, Лердорф решил в дальнейший разработках перейти с Perl на С.

Расширение существующего инструментария PHP привело к появлению PHP 2.0, или PHP-FI (Personal Home Page — Form Interpretator) . В усовершенствованиии версии 2.0 принимали участие программисты о всего мира.

Новая версия PHP пользовалась исключительной популярностью, и вскоре образовалась основная команда разработчиков. Они сохранили исходную концепцию внедрения програмного кода прямо в HTML и переписали заново механизм лексического анализа, что привело к появлению PHP 3.0. К моменту выхода версии 3.0 в 1997году свыше 50 000 пользователей применяли PHP для улучшения своих web-страниц. В 1997 году было решено, что сокращение PHP должно означать не «Personal Home page» а «PHP Hypertext Processor«.

В течение следующих двух лет стремительное развитие PHP продолжалось. В язык добавлялись сотни новых функций, а количество пользователей стремительно росло. В начале 1999 года служба Netcraft (http://www.netcraft.com) сообщила о том, что, по минималным оценкам, число пользователей PHP превысило 1 000 000, в результате чего PHP стал одним из самых популярных сценарных языков в мире.

В начале 1999 года было объявлено о предстоящем выходе PHP 4.0. Хотя одной из сильнейших сторон PHP была эффективность выполнения сценариев, при первоначальных разработках не предполагалось, что на базе PHP будут строиться крупномаштабные приложения.

0

Как устроен интернет? Протоколы передачи данных TCP/IP/HTTP. DNS и Доменные имена

протоколы передачи данных

В данном видео рассматривается специфика работы интернета, как он устроен, что такое протокол передачи данных TCP, HTTP. Какие бывают IP адресса, как взаимодействуют компьютеры между собой. Что такое доменное имя и DNS.

0

Выявлена уязвимость PHP 7, которая помогает перехватывать контроль над NGINX-серверами

уязвимость php7

Эксперты обнаружили в ветке PHP 7 уязвимость CVE-2019-11043, которая позволяет хакерам выполнять команды на сервере с помощью специально сформированного URL с добавлением ‘?a=’. Данный баг активно применяется при атаках, так как его просто эксплуатировать. Проблему усугубило то, что в октябре на GitHub появился PoC-код для определения уязвимых серверов. Он отправляет специально сформированные запросы, чтобы выяснить, уязвим ли … Читать далее Выявлена уязвимость PHP 7, которая помогает перехватывать контроль над NGINX-серверами

0

PhpStorm 2019.3: поддержка PHP 7.4, PSR-12, WSL, MongoDB

php strom released

Всем привет! Мы рады представить вам третий мажорный релиз PhpStorm в этом году!Под катом — подробный разбор всех заметных изменений и новых возможностей. Осторожно — очень много картинок. Скачать новую версию можно на сайте или с помощью Toolbox App. Как всегда, доступна 30-дневная пробная версия. Полную же версию могут использовать обладатели действующей подписки на PhpStorm или All Products pack, а … Читать далее PhpStorm 2019.3: поддержка PHP 7.4, PSR-12, WSL, MongoDB

0

28 Nov 2019 PHP 7.4.0 Released!

php 7.4 вышел

The PHP development team announces the immediate availability of PHP 7.4.0. This release marks the fourth feature update to the PHP 7 series. PHP 7.4.0 comes with numerous improvements and new features such as: Typed Properties Arrow Functions Limited Return Type Covariance and Argument Type Contravariance Unpacking Inside Arrays Numeric Literal Separator Weak References Allow … Читать далее 28 Nov 2019 PHP 7.4.0 Released!

0

PHP-News: декабрь 2019

php-news

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4, PhpStorm 2019.3, InfectionPHP и другие релизы, статистика версий PHP, об использовании FFI, видео с прошедших конференций и митапов, порция полезных инструментов, и многое другое. Приятного чтения!  Новости и релизы PHP 7.4.0 — Долгожданный релиз интерпретатора доставлен строго по расписанию. Спасибо всем контрибьюторам и релиз-менеджерам Derick … Читать далее PHP-News: декабрь 2019

0

MySQL 8

mysql 8

Первое, что сразу бросается в глаза — пропускаются версии 6 и 7. Да, изменится нумерация релизов, это уже входит в моду (nodejs, php, …). Но и у разработчиков из Oracle конечно же тоже были на это свои причины. Закат MyISAM Все системные таблицы уже переведены на InnoDB. Также представлены изменения, которые накладывают ограничения на использование MyISAM … Читать далее MySQL 8

0
Авторизация
*
*



Регистрация
*
*
*
Генерация пароля