Моё меню Общее меню Сообщество Правила форума Все прочитано
Вернуться   uForum.uz > ИКТ и телеком > Веб-ресурсы и доменные имена > Умершие веб-ресурсы
Сообщения за день Поиск
Знаете ли Вы, что ...
...для каждой темы существует свой раздел. Изучите структуру форума. Если соответствующего раздела нет, то всегда есть раздел "Разное" :)
<< Предыдущий совет - Случайный совет - Следующий совет >>

Умершие веб-ресурсы Темы о проектах, веб-сайтах, которые активно обсуждались на форуме, но перестали существовать, и следов их даже не осталось в сети.


 
 
Опции темы Опции просмотра
Старый 31.12.2011 16:25   #21  
Заблокирован(а)
Аватар для JackDaniels
Оффлайн
Сообщений: 18,519
+ 10,956  12,586/6,453
– 307  539/385

Vatican City State
Наконец-то убрал небольшой баг при отображении объявлений (во всплывающих окошках и в окне просмотра тоже).

Опишу подробно, может кому понадобится.

Проблема была в том, что многие вводят текст без пробелов, и этот текст не переносится браузером, ломает верстку.
Например — «метоксихлордиэтиламинометилбутиламиноакридин».

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

В HTML есть замечательный тег <wbr> — указывает браузеру место, где допускается делать перенос строки, причем он ни как не виден и не мешает потом текст скопировать, получив в итоге оригинальный.

Собственно далее все казалось бы просто, ловим таким вот образом: ([\S]{40}) последовательность символов и после сорокового вставляем тег <wbr>.
Но, есть подводный камень: Сайт в кодировке UTF8, а с кириллицей функция preg_replace(); работает не совсем корректно, так как символ латиницы занимает 1 байт, а кириллицы 2 байта.

Получается, что для функции 40 символов латиницы, то же самое, что 20 символов кириллицы, а если к слову на кириллице примыкает символ, то есть количество байт становится нечетным, то функция последний символ «разорвет» на два непечатных, и получается вообще не «айс»…

Короче говоря, не хотелось писать свою функцию, так как это был бы костыль, а хотелось использовать стандартную.

И на самом деле, есть ключ (u), позволяющий с обоими наборами работать как с символами, а не байтами.

Вот такая функция сейчас работает: preg_replace("#([\S]{40})#u","$0<wbr>",$offer['offer']);


Может для кого-то это и очевидно, но решил поделиться.
Ответить 
"+" от:
Реклама и уведомления
 

Метки
mart.uz




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Advertisement System V2.5 By Branden
OOO «Единый интегратор UZINFOCOM»


Новые 24 часа Кто на форуме Новички Поиск Кабинет Все прочитано Вверх