Skip to content

Instantly share code, notes, and snippets.

@codedokode
codedokode / Функции работы со строками в PHP и utf-8.md
Last active Mar 25, 2019
Функции работы со строками в PHP и utf-8
View Функции работы со строками в PHP и utf-8.md

Статья переехала в мой гитхаб: https://github.com/codedokode/pasta/blob/master/php/strings-utf8.md . Ниже идет устаревшая и неточная версия.


Некоторые функции PHP (strlen, substr, а также обращение к строке как к массиву: $str[0]) не работают с многобайтовыми кодировками (вроде utf-8). В utf-8 1 символ закодирован с помощью от 1 до 6 байтов, а эти функции думают, что 1 буква всегда кодируется одним байтом. По этой причине они ломают символы, в результате получаются битые символы и ничего не работает. Потому вместо них надо использовать mb_ функции например mb_strlen, mb_substr. Вместо доступа к строке как к массиву надо использовать mb_substr.

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

Давай разберем пример. Допустим, у нас есть строка из русской буквы «щ» в кодирове utf-8. Попытаемся взять первую букву с п

@codedokode
codedokode / DI, IoC.md
Last active Oct 11, 2021
DI, IoC, ServiceLocator, Registry
View DI, IoC.md

Этот урок переехал в мой гитхаб по адресу: https://github.com/codedokode/pasta/blob/master/arch/di.md

Ниже устаревшая версия урока.


Зачем нужны Depencdency Injection, IoC, ServiceLocator, Registry (и что это?)

Проблема, которую мы решаем — связность классов. Если в классе A написано

@codedokode
codedokode / Как установить PHP.md
Last active Mar 18, 2021
Как установить PHP (в картинках)
View Как установить PHP.md

Этот урок переехал в репозиторий с черновиками: https://github.com/codedokode/pasta/blob/master/soft/php-install.md

Ниже - старая, неподдерживаемая версия.


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

В инструкции упоминается командная строка. Если ты с ней не работал, можешь почитать мой краткий курс молодого бойца на эту тему: https://gist.github.com/codedokode/10539568

@codedokode
codedokode / Флоаты и маргины.md
Last active Jun 22, 2018
Флоаты и маргины на них (в том числе отрицательные)
View Флоаты и маргины.md

Эта статья перенесена по адресу https://github.com/codedokode/pasta/blob/master/html/float-margins.md Ниже старая, не обновляемая версия статьи.


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

Для float left: левый маргин влияет на флоат, правый — на окружающие элементы

Для float right: левый маргин влияет на окружающие элементы, правый — на сам флоат

@codedokode
codedokode / Простая задача на сайт на PHP.md
Last active Aug 29, 2015
Простая задача на сайт на PHP
View Простая задача на сайт на PHP.md

Это устаревшая версия документа.

Новая версия задачи (с подробными комментариями, пояснениями и советами) выложена по адресу https://github.com/codedokode/pasta/blob/master/student-list.md. Поверь, с новой версией решить задачу гораздо проще, там все подробно расписано, так что переходи и читай.


  • Требуется знать: PHP, основы ООП, основы баз данных, основы HTML/CSS, формы, таблицы, как работает веб-страница.
  • Уровень: начинающий
  • Время: 3-10 дней
View Тестирование и отладка верстки под IE.md
@codedokode
codedokode / Полезные ссылки.md
Last active Apr 30, 2019
Полезные ссылки
View Полезные ссылки.md

PHP

Что не нужно кодить самостоятельно - полезная статья, рассказывает о тех случаях, когда однозначно стоит использовать готовое решение, а не писать свой велосипед. Хочешь написать свой шаблонизатор или парсить HTML регулярками? Стой, прочти статью сначала.

Для тех, кому интересно — HTML нужно парсить XML/HTML-парсером, например встроенной в PHP библиотекой PHP DOM, искать нужные элементы в дереве удобно с помощью мини-языка запросов XPath

https://github.com/ziadoz/awesome-php - список библиотек и фреймворков на PHP на все случаи жизни. Нужен HTTP-клиент или валидатор JSON? Найдется.

http://phptrends.com/ — поиск по библиотекам и фреймворкам с учетом поулярности.

@codedokode
codedokode / js-task-1.md
Last active Oct 4, 2021
Задания на яваскрипт (простые)
View js-task-1.md
@codedokode
codedokode / Как установить Апач.md
Last active Jan 29, 2021
Как установить Апач
View Как установить Апач.md

Этот урок переехал: https://github.com/codedokode/pasta/blob/master/soft/apache-install.md

Ниже - старая, не поддерживаемая версия.


Итак, я решил установить Apache и PHP. Что дальше?

Молодец. Устанавливать Apache, PHP, MySQL лучше всего самому, так как при этом ты получишь ценные знания, а сборки лучше не использовать.

@codedokode
codedokode / datetime.md
Last active Jun 22, 2018
Дата и время в PHP
View datetime.md

Этот урок переехал по адресу https://github.com/codedokode/pasta/blob/master/php/datetime.md. Ниже старая, неподдерживаемая версия.


##Календари и время

В этом уроке мы поговорим о том, как работать с датой и временем в PHP. Часто в задачах нужно производить какие-то вычисления, связанные со временем, например «определить, какой день недели был 12 февраля 1956 года» или «найти дату на 3 дня позже, чем 26 февраля 2012 года». Не стоит спешить открывать редактор и писать очередной велосипед для работы с датами, давай лучше посмотрим, какие возможности уже встроены в PHP.

###Unix timestamp