Annushka
Новичок
функция по расстановке переносов
Добрый день.
Я не волшебница, а только учусь, прошу не судить строго...
У меня такой вопрос:
мне для лабы нужна функция по расстановке переносов в словах, я такую нашла, но вот беда, она работает с utf-8, а мне надо ср1251. И так как объемы текстов будут большие, использование перекодирования текста на лету, не приветствуется(и тормозит скрипт, проверила на практике), а моих знаний что-бы переделать ф-цию не хватает(пока). Подскажите как её переделать? Текст ф-ции такой:
Добрый день.
Я не волшебница, а только учусь, прошу не судить строго...
У меня такой вопрос:
мне для лабы нужна функция по расстановке переносов в словах, я такую нашла, но вот беда, она работает с utf-8, а мне надо ср1251. И так как объемы текстов будут большие, использование перекодирования текста на лету, не приветствуется(и тормозит скрипт, проверила на практике), а моих знаний что-бы переделать ф-цию не хватает(пока). Подскажите как её переделать? Текст ф-ции такой:
PHP:
function hyphen_words($text)
{
#буква (letter)
$l = '(?:\xd0[\x90-\xbf\x81]|\xd1[\x80-\x8f\x91] #А-я (все)
| [a-zA-Z]
)';
#гласная (vowel)
$v = '(?:\xd0[\xb0\xb5\xb8\xbe]|\xd1[\x83\x8b\x8d\x8e\x8f\x91] #аеиоуыэюяё (гласные)
| \xd0[\x90\x95\x98\x9e\xa3\xab\xad\xae\xaf\x81] #АЕИОУЫЭЮЯЁ (гласные)
| (?i:[aeiouy])
)';
#согласная (consonant)
$c = '(?:\xd0[\xb1-\xb4\xb6\xb7\xba-\xbd\xbf]|\xd1[\x80\x81\x82\x84-\x89] #бвгджзклмнпрстфхцчшщ (согласные)
| \xd0[\x91-\x94\x96\x97\x9a-\x9d\x9f-\xa2\xa4-\xa9] #БВГДЖЗКЛМНПРСТФХЦЧШЩ (согласные)
| (?i:sh|ch|qu|[bcdfghjklmnpqrstvwxz])
)';
#специальные
$x = '(?:\xd0[\x99\xaa\xac\xb9]|\xd1[\x8a\x8c])'; #ЙЪЬйъь (специальные)
/*
#алгоpитм П.Хpистова в модификации Дымченко и Ваpсанофьева
$rules = array(
# $1 $2
"/($x) ($l$l)/sx",
"/($v) ($v$l)/sx",
"/($v$c) ($c$v)/sx",
"/($c$v) ($c$v)/sx",
"/($v$c) ($c$c$v)/sx",
"/($v$c$c) ($c$c$v)/sx"
);
*/
#improved rules by D. Koteroff
$rules = array(
# $1 $2
"/($x) ($l$l)/sx",
"/($v$c$c) ($c$c$v)/sx",
"/($v$c$c) ($c$v)/sx",
"/($v$c) ($c$c$v)/sx",
"/($c$v) ($c$v)/sx",
"/($v$c) ($c$v)/sx",
"/($c$v) ($v$l)/sx",
);
#\xc2\xad = ­
$text = preg_replace($rules, "$1\xc2\xad$2", $text);
return $text;
}
