Автор Тема: Перенос слов и горизонтальная прокрутка!  (Прочитано 5956 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ardzhan

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 205
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ardzhan.km.ru
Возник такой вопрос! Браузер переносит слова по пробелам. А если написать "одно длинное слово", то дизайн в гостевой книге будет испоганен, появится горизонтальная прокрутка! Как с этим можно бороться?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Перенос слов и горизонтальная прокрутка!
« Ответ #1 : 26 Апреля 2002, 14:55:05 »
Цитировать
Как с этим можно бороться?

Делить длинные слова.
Либо просто ограничивая длину строки, либо учитывая переносы и т.д.:)
2B OR NOT 2B = FF

Оффлайн Ardzhan

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 205
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ardzhan.km.ru
Перенос слов и горизонтальная прокрутка!
« Ответ #2 : 26 Апреля 2002, 14:59:13 »
А как их делить? Я на PHP где-то видел такую функцию. У перла есть аналоги?

Оффлайн Ardzhan

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 205
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ardzhan.km.ru
Перенос слов и горизонтальная прокрутка!
« Ответ #3 : 26 Апреля 2002, 15:04:23 »
$text=wordwrap($text, 20, "\\n", 1); - это на пхп

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Перенос слов и горизонтальная прокрутка!
« Ответ #4 : 26 Апреля 2002, 16:21:39 »
use Text::Wrap

  $Text::Wrap::columns = 12;  
  $text1="eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
  print wrap(\'\', \'\', $text1);

выдает:
eeeeeeeeeee
eeeeeeeeeee
eeeeeeeeeee
eeeeeeeeeee
eeeeeeee
The documentations is your friend

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Перенос слов и горизонтальная прокрутка!
« Ответ #5 : 26 Апреля 2002, 16:33:04 »
Цитировать
use Text::Wrap

Или по простому - регулярным выражением пройтись.:)
2B OR NOT 2B = FF

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Перенос слов и горизонтальная прокрутка!
« Ответ #6 : 26 Апреля 2002, 16:45:03 »
Цитировать
Или по простому

Ага! И главное никакой разницы - что в Perl что в PHP ...
Читайте доки по регэкспам бо они рулез! :)
The documentations is your friend

Оффлайн Ardzhan

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 205
  • +0/-0
  • 0
    • Просмотр профиля
    • http://ardzhan.km.ru
Перенос слов и горизонтальная прокрутка!
« Ответ #7 : 26 Апреля 2002, 16:47:23 »
Спасибо.  А без подключения модуля? Извиняюсь за назойливость... может кто делал?

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Перенос слов и горизонтальная прокрутка!
« Ответ #8 : 26 Апреля 2002, 19:18:28 »
$text=~s/(\\S{30})/$1 /g;
все что длинее 30 символов порубит
другое дело, что могут быть проблемы со ссылками..
 в исканиях.

Оффлайн ESE

  • Фанат
  • Постоялец
  • ***
  • Сообщений: 172
  • +0/-0
  • 2
    • Просмотр профиля
    • http://comp.hobi.ru
Перенос слов и горизонтальная прокрутка!
« Ответ #9 : 26 Апреля 2002, 23:01:52 »
Альтернатива :)

#!/usr/bin/perl
print "Content-type: text/html\\n\\n";
$preform=10;#допустимое кол-во символов в строке
$text="http://my_domen.com/my_domen.com/my_domen.com/my_dome";
if (length($text)>$preform){&format_text}
print $text;

sub format_text {
@text=split(//,$text);$n=1;
foreach $text (@text){
$format_text="$format_text$text";
if ($n==$preform){$format_text="$format_text
";$n=0;}$n++}
$text=$format_text   }
У програмиста две руки: левая и !левая
welcome

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Перенос слов и горизонтальная прокрутка!
« Ответ #10 : 27 Апреля 2002, 01:22:32 »
Цитировать
$text="http://my_domen.com/my_domen.com/my_domen.com/my_dome";
if (length($text)>$preform){&format_text}

не подойдет, т.к. текст, по идее, будет содержать не одну лишь строку длиной в полкилометра, а много разных слов, и там символов может быть и более 10, например:
$text="domen.com вася убежал за угол, козел он!";
 в исканиях.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Перенос слов и горизонтальная прокрутка!
« Ответ #11 : 27 Апреля 2002, 09:16:58 »
Цитировать
$text=~s/(\\S{30})/$1 /g;
все что длинее 30 символов порубит
другое дело, что могут быть проблемы со ссылками..

Убираем проблемы со ссылками:
s|([^ \\/\\\\]{30})|$1 |g;
2B OR NOT 2B = FF

Оффлайн Боря Елкин

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webmetr.pips.ru
Перенос слов и горизонтальная прокрутка!
« Ответ #12 : 27 Апреля 2002, 10:36:33 »
Цитировать
Убираем проблемы со ссылками:
s|([^ \\/\\\\]{30})|$1 |g;


В принципе тоже не решение, можно и длинной ссылкой растянуть дизайн. Нужно делать как в этом форуме - ссылку укорачивать и вставлять в href.

Но это одним regexpом не сделать.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Перенос слов и горизонтальная прокрутка!
« Ответ #13 : 27 Апреля 2002, 11:31:58 »
Цитировать
Но это одним regexpом не сделать.

Можно сделать, но сразу говорю, что писать его не буду.:)
2B OR NOT 2B = FF

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Перенос слов и горизонтальная прокрутка!
« Ответ #14 : 27 Апреля 2002, 14:59:40 »
Цитировать
Но это одним regexpом не сделать.

Можно сделать, но сразу говорю, что писать его не буду.

наверное лучше/проще двумя, например чуть лучший вариант:

1. режем все что вне тегов:
$text~=s/>([^><]{30})$1

2. уже это:
$text~=s|([^ \\/\\\\]{30})|$1 |g;

конечно возможен такой вариант баловства:
 в исканиях.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28