![]() |
|
||||||||||
|
|||||
|
Нирва, дружище, ты не прав
copy & paste & see <? $str = "строка товя оргромная с мегачем-то там таким, кстати, самое длинное. известное мне и частоупотребляемое слово - достопримечтальность"; $res .= wordwrap($curr,10," ",1); echo $res; ?> Результат должен быть приссерно таким : строка товя оргромная с мегачем-то там таким, кстати, самое длинное. известное мне и частоупотр ебляемое слово - достоприме чтальность Если слово меньше максимума, вордврап его трогать не будет |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Hint: правильная реализация должна основываться на двух константах: m=максимальная допустимая длина слова и n=размер нарезаемого куска. А совсем хорошо -- если будет еще и k=минимальный размер нарезаемого куска.
Так что все приведенные варианты можно рассматривать только как вариант на черный день...
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ Последний раз редактировалось Crazy; 26.09.2003 в 22:00. |
|
|||||
|
"Вождь"
|
2крейзи и компадре:
стойте-ка стойте-ка. Цитата:
длинные слова находит? (ну всем понятно что 10 можно поменять на 20). находит. пробелами разбивает? разбивает. ich verstehen euch nicht. что не так?
__________________
а мы летим орбитами путями не избитыми... |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
m=20
![]() Осталось добавить n и k. ![]()
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Да нет, все так ... Просто не совсем правильно как мне кажиться ...
зачем перегружать машину излишними explod-ами (представляеш какой массив может получиться если текст большой) и foreacham-и если тот код который написал я зделает то же самое что и твой ? ![]() |
|
|||||
|
"Вождь"
|
а прег реплейс знач в воздухе работает =)
да нет, я просто привел пример без регуляров. если бы у меня стояла такая задача я бы воспользовался ими. мне теперь не это интересно... мнев от что интересно - ход мыслей крейзи. пояснишь?
__________________
а мы летим орбитами путями не избитыми... |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
Вывод: рвем только слова длинее m. Т.е. m -- длина, при которой слово мы никак не может оставить целым. Постулат 2. Если мы уже решили рвать слово, то лучше разбивать его на куски удобного размера. Поскольку m -- максимум, то n (максимальная длина куска) будет меньше m. Постулат 3. При разбивке от конаца слова могут отрезаться 1-3 буквы, что некузяво. Следовательно, стоит указать k, задающее минимальный размер куска. Значения, которые кажутся мне разумными: m=25 n=15 k=4
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Нирва
Блин ! И опять мы про воздух ... Ты посмотрел код который я предлагал ? Где там регексп ?Ты его запустил ? Ребята, конечно хорошо все константами определять, но и оптимизировать нада ... Единственный способ который я вижу сделать то что крэйзи предлогает это цикл в котором будем вырезать по букве (!!!) субстр-ом и вставлять в новую строку (добовляя пробел если смежных букв слишком много ) ... пока старая не закончиться. Это же итераций будет сколько букв! Wordwrap специально создан для того что хочет афтор топика (помоему) ... Не надо морочиться . Просто принять как факт. Последний раз редактировалось kompadre; 27.09.2003 в 00:15. |
|
|||||
|
ЗЫ про константы ...
просто вместо 10 поставить более удобное число ... скажем 15 как крэйзи правильно заметил |
|
|||||
|
"Вождь"
|
компадре:
<? $str = "строка товя оргромная с мегачем-то там таким, кстати, самое длинное. известное мне и частоупотребляемое слово - достопримечтальность"; $res .= wordwrap($curr,10," ",1); echo $res ?> ты про это? ну переменной с именем curr не существует, черт с ним, забыл. аа... тьфу ты, ну да, конечно. я прогнал. не пользовался вордврапом давно =) да, верно. итак, мы имеем: либо быструю функцию приведенную выше (не забыть исправть curr на str) или то, что предлагает крейзи, - придется писать дольше и процесс будет длиннее. Вывод: делаем первый случай или раз это оочень важно делаем второй. Все зависит от того, что используется в качестве строки.
__________________
а мы летим орбитами путями не избитыми... |
![]() |
Часовой пояс GMT +4, время: 01:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|