по русски - диапозон. То есть это начало и конец выделения. То есть если вы хотите установить курсор где-то в тексте, то нужно создать диапозон, у которого начало и конец будут сопадать (насколько я помню так).
@AryaGoGo, С проще чем Си++, именно по этому и сложнее писать (хотя тоже относительно все). Самое сложное пожалуй в Си, это управление памятью, хотя это вообще пожалуй самое сложное что есть в программировании...
@goilo, по картинке вроде как и так понятно, там где разбирают 4 рэйджа.
Возмем первый рэйндж, s1 - e2. Если у нас выделение начинается где-то в тексте, а не между DOM элементами, то в качестве элемента для s1 будет выступать TextNode. Смещение для TextNode будет показывать, с какого символа начинается рэйндж. В примере - до начала рэйджа у нас есть два символа. Для второго примера, выделени начинается между dom элементами, так что у нас элементом для начала рэйджа будет body. а отсчет будет проводиться по dom элементам. В примере у нас перед s2 только один dom элемент, так что смещение будет равно еденице.
для этого нужен canvas, жирный канвас поверх страницы. Если вы захотите сделать это дело через DOM, то у вас все это будет безбожно педалить.
Единственное что вам нужно учесть, это положение изображение, которое вы собираете и событие resize для страницы, ибо при ресайзе у вас координаты пикселей будут смещаться. Ну словом, относительно просто, но займет время.
@ernestby, внезапно... интересно как это вы пришли к такому умозаключению? Вот что что а то что NPP послабее саблайма это факт. Я вообще намекал больше на полноценные IDE аля phpstorm или netbeance. В 8-ом шторме почти все фишки саблайма уже заимплементили.
Ну возможно при использовании фреймворков вы не только одной функцией будете пользоваться. Скажем фреймворки аля angular.js помогут вам стартовать, научат модульному дизайну, помогут писать менее связанный код. После можно попробовать что-то посложнее, например backbone, в котором структуру проекта делаете уже вы, что дает профит в производительности. Ну и не стоит забывать что код стоит покрывать тестами для последующих изменений и рефакторинга в будущем.
@Koteika_Tut, достаточно инициализировать переменную перед этими ивами. И заменить $msg_err = '' . $msg_err на $msg_err .= ''.
Но вообще я бы рекомендовал вам работать напрямую с массивом, а не биндить на переменные (тут могут тоже быть ошибки), и формировать результат тоже как массив - имя, ошибка. Если массив пуст - значит ошибок нету и все валидно.