Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбить текст на предложения 
:(
    Опции темы
SDEVIL
Дата 2.2.2009, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 30.10.2006

Репутация: нет
Всего: 1



Помогите составить регулярку которая разбивает текст на предложения. Т.е. обязательно начинается с заглавной буквы и заканчивается точкой. Только кириллица.  smile

Добавлено через 5 минут и 24 секунды
я вот что-то такое написал: 
Код

([.] [А-Я]+[^.]+[.])

по другому пока не знаю как :(
--------------------
Подпись сбежала к другому юзверю....
PM MAIL   Вверх
enof
Дата 2.2.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



Самое простое:
#([А-Я].*\.)#U
PM MAIL ICQ Skype   Вверх
ksnk
Дата 2.2.2009, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 12
Всего: 386



enof, А как разобьется "Кабачок у И.Б.Христа запазухой." ?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
enof
Дата 2.2.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



ksnk, уже думаю smile

Добавлено через 8 минут и 54 секунды
#([А-Я].*(?<=(?:[а-я]){2,})\.)#Uu
PM MAIL ICQ Skype   Вверх
SDEVIL
Дата 2.2.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 30.10.2006

Репутация: нет
Всего: 1



Код

preg_split("#([А-Я].*(?<=(?:[а-я]){2,})\.)#Uu", $file, null, PREG_SPLIT_DELIM_CAPTURE);

может я чего не правильно написал, но он вообще не разбивает, все одной строкой получается
--------------------
Подпись сбежала к другому юзверю....
PM MAIL   Вверх
enof
Дата 2.2.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 1
Всего: 35



Еще одна редакция
Код

#((?:(?-i)[А-Я]).*(?<=(?:[а-я]){2,})\.)#Uui


Добавлено @ 21:51
Код

echo "<pre>";
preg_match_all("#((?:(?-i)[А-Я]).*(?<=(?:[а-я]){2,})\.)#Uui ",$str,$arr_match);
print_r($arr_match);
echo "</pre>";

Где $str - текст,подвергающийся экзекуции.

Это сообщение отредактировал(а) enof - 2.2.2009, 21:51
PM MAIL ICQ Skype   Вверх
valanchik
Дата 1.11.2009, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.11.2009

Репутация: нет
Всего: нет



Код

echo "<pre>";
preg_match_all("#((?:(?-i)[А-Я]).*(?<=(?:[а-я]){2,})\.)#Uui ",$str,$arr_match);
print_r($arr_match);
echo "</pre>";

Спасибо большое, код рабочий.
Я только немного добавил некоторые символы перед точкой
Код

preg_match_all('#((?:(?-i)[А-Я]).*(?<=(?:[а-я\)\"\\\'\s]){2,})\.)#Uui',$text, $result);

PM MAIL   Вверх
valanchik
Дата 1.11.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.11.2009

Репутация: нет
Всего: нет



а вообще кому интересно то я тут класс набросал
Код

Class yu{
var $text;
    function yu($text=''){
    $text=preg_replace('#<.*?>#msi','',$text); //я тут правда ещё теги рублю
    $this->text=$text;
    }
    function Suggestions(){
    $r='';
        if($this->text){
        preg_match_all('#((?:(?-i)[А-Я]).*(?<=(?:[а-я\)\"\\\'\s]){2,})\.)#Uui',$this->text, $res);
            if(isset($res[0]) and is_array($res[0])){
                foreach($res[0] as $a)
                if(!is_array($a))$r[]=$a;
            }
        }
    return $r;
    }
}

Пользуемся класом так:
Код

$text="Вася пупкин. Воистину Вася.";
$tc= new yu($text);
$offers=$tc->Suggestions();
print_r($offers);




Это сообщение отредактировал(а) valanchik - 1.11.2009, 14:46
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.