Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Перенос очень длинного набора символов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Арикус
Отправлено: 10 Сентября, 2015 - 08:32:12
Post Id



Гость


Покинул форум
Сообщений всего: 123
Дата рег-ции: Июнь 2015  
Откуда: Москва, Россия


Помог: 0 раз(а)




Если пользователь оставляет сообщение с очень длинным набором символов без пробелов, например, аааааааааааааааааааааааааааааааа аааааааааааааааааааааааааааааааа аааааааааааааааааааааааааааааааа аааааааааааааааааааааааааааааааа аааааааааааааааааааааааааааааааа аааааааааааааааааааааааааааааааа ааааааааааааааа
, то строка не переносится, и появляется горизонтальная полоса прокрутки. (Добавлять пробелы, как на этом форуме, я не хочу)
Пробовал применить
CODE (html):
скопировать код в буфер обмена
  1. .longTrans{white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;}

CODE (htmlphp):
скопировать код в буфер обмена
  1. <td rowspan="2" class="longTrans">'.$lsPar['Text'].'<br /></td>

, где $lsPar['Text'] - текст, содержащий длинный набор символов. Никакого эффекта.

Ещё есть тег <wbr>, но я не пойму, как его включить в текст. Например, если есть кусок текста без пробелов длиной больше 100 символов, то после 100-го вставляется тег, далее после 110-го, 120-го и т.д.

(Отредактировано автором: 10 Сентября, 2015 - 08:35:43)

 
 Top
DelphinPRO
Отправлено: 10 Сентября, 2015 - 09:56:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




pre-wrap не нужен, просто:

(Добавление)
Арикус пишет:
Ещё есть тег <wbr>, но я не пойму, как его включить в текст.


на htmlbook есть пример:
CODE (html):
скопировать код в буфер обмена
  1. <p class="word">метоксихлор<wbr>диэтиламино<wbr>метил<wbr>бутил<wbr>амино<wbr>акридин</p>

(Отредактировано автором: 10 Сентября, 2015 - 09:59:23)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Арикус
Отправлено: 10 Сентября, 2015 - 13:57:18
Post Id



Гость


Покинул форум
Сообщений всего: 123
Дата рег-ции: Июнь 2015  
Откуда: Москва, Россия


Помог: 0 раз(а)




DelphinPRO пишет:
word-wrap: break-word;

Тоже не работает.
DelphinPRO пишет:
<p class="word">метоксихлор<wbr>диэтиламино<wbr>метил<wbr>бутил<wbr>амино<wbr>акридин</p>

Вы не поняли. Мне нужно, чтобы <wbr> автоматически вставлялись в произвольный текст. Но не просто пихать через каждые 5 символов, а только в длинные слова.
 
 Top
DelphinPRO
Отправлено: 10 Сентября, 2015 - 14:00:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Арикус пишет:
Тоже не работает.

сделай неработающий пример на jsfiddle.net и покажи


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DlTA
Отправлено: 10 Сентября, 2015 - 14:17:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Арикус пишет:
Мне нужно, чтобы <wbr> автоматически вставлялись в произвольный текст. Но не просто пихать через каждые 5 символов, а только в длинные слова.


http://www.php.su/wordwrap()

смотрите все параметры
 
 Top
DelphinPRO
Отправлено: 10 Сентября, 2015 - 15:47:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Арикус пишет:
Вы не поняли. Мне нужно, чтобы <wbr> автоматически вставлялись в произвольный текст. Но не просто пихать через каждые 5 символов, а только в длинные слова.

C произвольным переносом прекрасно справится css word-wrap. А этот тег - для мягкого переноса. Вставлять его нужно руками, в те места, где по правилам русккого (любого) языка можно делать перенос слова.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Сентября, 2015 - 16:54:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




DlTA пишет:
wordwrap
Некорректно работает с многобайтными.
 
 Top
lastdays
Отправлено: 10 Сентября, 2015 - 20:10:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




DeepVarvar пишет:
DlTA пишет:
wordwrap
Некорректно работает с многобайтными.


Какие варианты есть? интересно и важно...
пару лет назад при верстке и вообще написания логики маленького форума / блога, тоже с этой проблемой столкнулся, помог word-wrap: break-word; от такого случая, текста в одну строку.
 
 Top
Арикус
Отправлено: 11 Сентября, 2015 - 05:25:58
Post Id



Гость


Покинул форум
Сообщений всего: 123
Дата рег-ции: Июнь 2015  
Откуда: Москва, Россия


Помог: 0 раз(а)




Всем спасибо.
Как я уже говорил, по какой-то неизвестной причине word-wrap: break-word; у меня не работает.
Если кому интересно, проблему решил с помощью вот такой конструкции:
PHP:
скопировать код в буфер обмена
  1. $pieces = explode(" ", $lsPar['Text']); // Для длинных слов
  2.         foreach ($pieces as $keyP => $valueP)
  3.                 {if (strlen($valueP) > 80)
  4.                         {if (strlen($valueP) % 10 == 0) $simDel = strlen($valueP) - 10;
  5.                                 else $simDel = strlen($valueP) - strlen($valueP) % 10;
  6.                 $valuePNew = $valueP;
  7.                         while ($simDel > 79)
  8.                         {$valuePNew = substr($valuePNew, 0, $simDel).'<wbr>'.substr($valuePNew, $simDel);
  9.                         $simDel = $simDel - 10;}
  10.                 $lsPar['Text'] = str_replace($valueP, $valuePNew, $lsPar['Text']);
  11.         }}
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Сентября, 2015 - 09:09:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. $lsPar = array('Text' => 'абвгsdfgсчвыsdfgапsdfsdfgклмноsdfgsпрстуфхцsdfggэюяабвsdfgsгдеgёsdfжзиклsdfgsdмноsdfgпрабвгдsdfеёжзиклмнsdfопрстуsdfgфхцчшщъыьтуфхцчsdfшщъыьэюя');
  2.  
  3. echo $lsPar['Text'] . PHP_EOL;

абвгsdfgсчвыsdfgапsdfsdfgклмноsdfgsпрстуфхцsdfggэюяа�<wbr>�вsdfgsг<wbr>деgёsdf<wbr>жзикл<wbr>sdfgsdмн<wbr>оsdfgпр<wbr>абвгд<wbr>sdfеёж�<wbr>�иклм�<wbr>�sdfопр<wbr>стуsdfg<wbr>фхцчш<wbr>щъыьт<wbr>уфхцч<wbr>sdfшщъ�<wbr>�ьэюя
 
 Top
Viper
Отправлено: 11 Сентября, 2015 - 09:45:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




DeepVarvar сломал форум Однако


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DelphinPRO
Отправлено: 11 Сентября, 2015 - 15:41:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Арикус пишет:
Как я уже говорил, по какой-то неизвестной причине word-wrap: break-word; у меня не работает.
Если кому интересно, проблему решил с помощью вот такой конструкции:

Вместо того, чтобы найти причину, и сделать как положено, наговнокодил. Да еще и с ошибками, как правильно подметил Дип.

http://jsfiddle[dot]net/vcke5gjw/ - что здесь может не работать?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
IllusionMH
Отправлено: 11 Сентября, 2015 - 17:11:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB