Рубрика «Рабочие заметки»

2
1 2 3 4 5 6 7 8 9 10

Php: правильно считаем количество символов в строке

23 апреля 2012. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

Когда-нибудь видели на сайтах предупреждение: «Длина сообщения не более…» например, 500 символов? Начинаешь писать, честно укладываешься в 450 символов, а при отправке получаешь отлуп: слишком длинное сообщение…

Если вы догадаетесь сократить сообщение до 250 символов или использовать транслит, сообщение всё-таки удастся отправить, но остаётся желание кого-то взять за грудки и сказать: что ж ты, милый, людям голову-то морочишь?!..

На самом деле это означает, что «на той стороне» сидит несведущий вебмастер. Может, он иностранец и не знает, что такое кириллица, а может, из наших палестин недоучка. Причина такого расхождения в обещанной и реальной длине — размер кириллических символов в UTF-8: по 2 байта вместо 1 для латинских. Php-шная функция strlen считает длину строки в байтах, а не в буквах, и если буква занимает два байта, она засчитывается за две.

Ну хорошо, чужие сайты мы улучшить не можем, а как не делать такой ошибки у себя? Используем функцию iconv_strlen, и не забываем указывать кодировку. Итого:

/*считаем длину строки*/
$strLength = iconv_strlen('а вот тут наша строчка', 'UTF-8');

Кодировка — главный «крекс-пэкс-фэкс» функции, без него эффекта не будет.

Другой случай, когда разница между strlen и iconv_strlen оказывается существенной — обрезка строки до нужной длины. Strlen не только уменьшает вдвое число кириллических символов, но может также разрезать последний из них пополам. Если на странице сайта вы видите нечто вроде «А это анонс нашей замечательной стат?», это, скорее всего, тот самый случай. Когда такое вылезает в читаемом тексте — полбеды, но если таким образом выведется переменная в код скрипта, последствия могут быть очень неприятными — вплоть до полной визуальной гибели той части страницы, что идёт после «крамольного» участка. Функция iconv_strlen избавит нас от подобных неприятностей. Скажем ей за это спасибо. :)

29 комментариев »

WordPress: как сразу узнать, подписан ли комментатор на ответы

9 апреля 2012. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

В чём, по-вашему, главная головная боль владельцев блога-dofollow? Правильно: спамеры-ручники (спам-автомат мы отрезаем намного раньше). Люди, которые ходят по спискам dofollow-блогов и оставляют комментарии без души (хотя порой и с умом), зато со ссылкой. И хотя dofollow, как правило, вводят для повышения комментируемости, «холостые» комменты — вовсе не цель хозяина такого блога.

Что делать? Модерировать. Или премодерировать, как я. Какие комментарии пропускать, каждый блоггер определяет сам, но человекоподобность — главный критерий. Один из возможных признаков серьёзности комментатора — подписка на новые комментарии к данному посту (для подписки на wordpress-блогах используем плагин Subscribe To Comments).

Способ выделить комментарии, автор которых решил подписаться на ответы, давно известен. У меня, например, такие комменты отмечены пиктограммой-конвертиком. Однако этот способ сообщает о подписанности или неподписанности посетителя только после одобрения комментария и появления его на сайте. В админке и в почтовых уведомлениях админу об этом не говорится. А жаль — иной раз именно этой информации не хватает, чтобы окончательно решить, что делать с комментатором.

Итак, как же облегчить себе и жизнь и сразу узнать о намерении пользователя получить ваш ответ? (далее…)

44 комментария »

Табличные значения display: table, table-cell, table-row, table-column, и другие

10 октября 2011. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

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

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

(далее…)

69 комментариев »

Display: inline-block, или на грани кроссбраузерности

5 сентября 2011. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

Из этой заметки вы узнаете:

  • как ведёт себя элемент со значением display: inline-block;
  • какие бывают сюрпризы при его применении;
  • как обойти зловредный IE7;
  • а также как можно использовать display: inline-block и чем он лучше float: left.

(далее…)

47 комментариев »

Волшебное свойство display, или типы отображения элементов html

22 августа 2011. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

Часть первая, адаптированная под ИЕ7.

Css-свойство display задаёт тип отображения элемента. На русский язык его можно перевести фразой: «Веди себя как». То есть, берём любой элемент html и говорим ему: веди себя как… блок, строка, таблица или вообще как будто тебя нет.

Все существующие на данный момент значения свойства display: (далее…)

21 комментарий »

Селекторы атрибутов: примеры практического применения

19 июня 2011. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

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

8 комментариев »

Селекторы атрибутов: краткий список

27 марта 2011. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

Чем дальше уходит в прошлое ie6, тем охотней я пользуюсь примочками css, доступными современным браузерам. Одна из таких возможностей — селекторы атрибута (attribute selectors), или селекторы по атрибутам.

Примечание: IE7 и 8 понимают селекторы атрибута только в том случае, когда у страницы указан правильный доктайп. В противном случае они утрачивают понятливость.

Виды селекторов атрибутов
Название Вид Область действия
Селектор существования атрибута (existence attribute selector) [имя атрибута] Все элементы, имеющие этот атрибут (с любым значением)
Селектор равенства атрибута (equality attribute selector) [имя=«значение»] Все элементы, имеющие данный атрибут с данным значением
Селектор атрибута с пробелами (whitespase attribute selector) [имя~=«значение»] Элементы, имеющие этот атрибут с данным словом в списке значений
Селектор атрибута с дефисом (hyphen attribute selector) [имя|=«значение»] Элементы, имеющие этот атрибут, при том, что его значение либо совпадает с указанной частью, либо начинается с неё и дефиса
Селектор префикса атрибута (prefix attribute selector) [имя^=«значение»] Элементы, у которых значение данного атрибута начинается с указанной части
Селектор суффикса атрибута (suffix attribute selector) [имя$=«значение»] Элементы, у которых значение данного атрибута оканчивается указанной частью
Селектор подстроки атрибута (substring attribute selector) [имя*=«значение»] Элементы, у которых значение данного атрибута содержит указанную часть

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

Селекторы атрибутом можно комбинировать друг с другом и другими селекторами:

input[type="text"]
— выбраны элементы input типа text (текстовые поля)
input[type="text"].error
— выбраны текстовые поля с классом error
td input[type="text"]
—выбраны текстовые поля, заключённые в табличные ячейки
input[type="button"][onclick]
— выбраны элементы input типа button (кнопка), на который повешено событие onclick

Селекторы существования, равенства, с пробелом и с дефисом определены в стандарте CSS2.1. Селекторы префикса, суффикса и подстроки определены в стандарте CSS3.

О том, как можно использовать селекторы атрибутов на практике, расскажу в следующий раз.

5 комментариев »

1 2 3 4 5 6 7 8 9 10