Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Мягкий перенос в UTF-8
 
 автор: Лена   (25.08.2009 в 00:23)   письмо автору
 
 

У меня контейнер(div) шириной 140px, в него надо вложить текст - так, чтобы длинные слова переносились на другую строчку и на месте разрыва ставился знак переноса.
Нашла скрипт по расстановке переносов:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=13268
Изменила его для UTF-8, поменяла preg_replace на mb_ereg_replace - переносы в словах вообще не ставятся. Что делать? В смысле, как делить слова по слогам и ставить знак переноса в нужном месте?
Есть ли еще какие-то варианты по мягким переносам?
Ручную расстановку, расстановку с помощью &shy и justify (в стилях) не предлагать.

  Ответить  
 
 автор: Trianon   (25.08.2009 в 08:48)   письмо автору
 
   для: Лена   (25.08.2009 в 00:23)
 

тот скрипт и так работал. Вы его только испортили.
Для переделывания нужно было брать http://softtime.ru/forum/read.php?id_forum=6&id_theme=24186

  Ответить  
 
 автор: Лена   (25.08.2009 в 12:15)   письмо автору
 
   для: 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>";

  Ответить  
 
 автор: Trianon   (25.08.2009 в 12:59)   письмо автору
 
   для: Лена   (25.08.2009 в 12:15)
 

они содержат разный код хотя бы потому (вернее только и именно потому), что в них применяются разные шаблоны рег-экспов.
Символ в utf-8 и символ в php - разные вещи. Отсюда и разница в работе.
Исходную utf-версию явно писал человек, который о наличии модификатора u в preg-функциях не знал.
ну а тот вариант, что по моей ссылке, я просто аккуратно переписал в ключе один байт - один символ.

  Ответить  
 
 автор: Лена   (26.08.2009 в 18:59)   письмо автору
 
   для: 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= &shy;
    
$text preg_replace($rules"$1\xc2\xad$2"$text); // не \xad
    
return  $text;
?>

Спасибо за подсказки. От них больше толку.

  Ответить  
 
 автор: exp   (25.08.2009 в 13:32)   письмо автору
 
   для: Лена   (25.08.2009 в 12:15)
 

> и justify (в стилях) не предлагать.

:) Вы имели ввиду это это ?

Тогда посмотрите, например, ещё это
http://softtime.ru/forum/read.php?id_forum=4&id_theme=67008

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования