|
|
|
| У меня контейнер(div) шириной 140px, в него надо вложить текст - так, чтобы длинные слова переносились на другую строчку и на месте разрыва ставился знак переноса.
Нашла скрипт по расстановке переносов:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=13268
Изменила его для UTF-8, поменяла preg_replace на mb_ereg_replace - переносы в словах вообще не ставятся. Что делать? В смысле, как делить слова по слогам и ставить знак переноса в нужном месте?
Есть ли еще какие-то варианты по мягким переносам?
Ручную расстановку, расстановку с помощью ­ и justify (в стилях) не предлагать. | |
|
|
|
|
|
|
|
для: Лена
(25.08.2009 в 00:23)
| | тот скрипт и так работал. Вы его только испортили.
Для переделывания нужно было брать http://softtime.ru/forum/read.php?id_forum=6&id_theme=24186 | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2009 в 08:48)
| | Не поняла. Та ссылка, которую я дала, и ваша содержат одинаковый код.
Если я использую его для UTF-8, у меня на выходе получаются квадратики.
Поставила функцию, которая работает в UTF-8 - mb_ereg_replace() , на слоги не делит.
Посмотрите сами. Допустим, вот такой вызов функции:
echo "<div style = 'width: 110px; background-color: #ffd; display:block;'>" .
hyphen_words("Проверка алгоpитма Проверка алгоpитма Проверка алгоpитма Проверка алгоpитма
Проверка алгоpитма Проверка алгоpитма Проверка алгоpитма Проверка алгоpитма Проверка
алгоpитма") . "</div>"; | |
|
|
|
|
|
|
|
для: Лена
(25.08.2009 в 12:15)
| | они содержат разный код хотя бы потому (вернее только и именно потому), что в них применяются разные шаблоны рег-экспов.
Символ в utf-8 и символ в php - разные вещи. Отсюда и разница в работе.
Исходную utf-версию явно писал человек, который о наличии модификатора u в preg-функциях не знал.
ну а тот вариант, что по моей ссылке, я просто аккуратно переписал в ключе один байт - один символ. | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2009 в 12:59)
| | Забыла ответить сразу. Хорошо, что сегодня вспомнила, может, другим пригодится.
Получилось. Переделала уже по вашей ссылке.
<?php
#improved rules by D. Koteroff + Trianon :)
$rules = array(
# $1 $2
"/($x) ($l$l)/sxu",
"/($v$c$c) ($c$c$v)/sxu",
"/($v$c$c) ($c$v)/sxu",
"/($v$c) ($c$c$v)/sxu",
"/($c$v) ($c$v)/sxu",
"/($v$c) ($c$v)/sxu",
"/($c$v) ($v$l)/sxu",
);
#\xc2\xad= ­
$text = preg_replace($rules, "$1\xc2\xad$2", $text); // не \xad
return $text;
?>
|
Спасибо за подсказки. От них больше толку. | |
|
|
|
|
|
|
|
для: Лена
(25.08.2009 в 12:15)
| | > и justify (в стилях) не предлагать.
:) Вы имели ввиду это это ?
Тогда посмотрите, например, ещё это
http://softtime.ru/forum/read.php?id_forum=4&id_theme=67008
Лично у меня не получилось сделать во всех имеющихся браузераж одинаковое отображение шрифтов, ни одним из предложенных способов.
Если только делать такое для одного определённого браузера, например для распечатывания текста
, но для использования как вэб страниц это как-то сомнительно | |
|
|
|