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

Форум Регулярные Выражения

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

 

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

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

тема: Расстановка переносов.
 
 автор: Trianon   (08.09.2006 в 17:58)   письмо автору
 
 

Попалась реализация алгоритма расстановки переносов адаптированная к windows-1251
Может кому пригодится.

<?php

function hyphen_words($text)
{
    
#буква (letter)
    
$l '(?:[ёЁА-я]  #ё Ё А-я (все)
           | [a-zA-Z]
           )'
;

    
#гласная (vowel)
    
$v '(?:[аеиоуыэюяё]  #аеиоуыэюяё (гласные)
           | [АЕИОУЫЭЮЯЁ]         #АЕИОУЫЭЮЯЁ (гласные)
           | (?i:[aeiouy])
           )'
;

    
#согласная (consonant)
    
$c '(?:[бвгджзклмнпрстфхцчшщ]  #бвгджзклмнпрстфхцчшщ (согласные)
           | [БВГДЖЗКЛМНПРСТФХЦЧШЩ]                #БВГДЖЗКЛМНПРСТФХЦЧШЩ (согласные)
           | (?i:sh|ch|qu|[bcdfghjklmnpqrstvwxz])
           )'
;

    
#специальные
    
$x '(?:[ЙЪЬйъь])';   #ЙЪЬйъь (специальные)

    /*
    #алго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",
    );

    
#\xad = &shy;
    
$text preg_replace($rules"$1\xad$2"$text); // не \xc2\xad
    
return  $text;
}

echo 
hyphen_words("Проверка алгоpитма");
?>

   
 
 автор: WebTech   (08.09.2006 в 18:48)   письмо автору
 
   для: Trianon   (08.09.2006 в 17:58)
 

О! Спасибо! :-)

   
Rambler's Top100
вверх

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