|
|
|
| Добрый день..
Задача у меня следующия - необходимо найти в тексте окончания предложений и разбить текст по предложениям в массив.
Если использовать к примеру $text1mas = explode (". ", $text1); то строки с инициалами и т.п. разбиваются не верно (ведь точка там - не конец предложения).
Я пытался использовать такое вот регулярное выражение (php не русский у меня на хосте):
'[АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯабвгдеёжзийклмнорпстуфхцчшщъьыэюяA-Za-z]+(\.)( )[АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯA-Z][АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯабвгдеёжзийклмнорпстуфхцчшщъьыэюяA-Za-z]*'
Но сколько функций разных не перепробывал (типа preg_match, split и т.п) - никак не получается сделать чтобы разбивка происходила в определенном месте регулярного выражения (там где пробел)...
При этом ничего страшного если в некоторых ячейках массива попадет не одно а 2-3 предложения.
Буду признателен за помощь.. Возможно есть какая-то функция или комбинация функций для осуществления пободного действия. | |
|
|
|
|
|
|
|
для: qru
(02.05.2008 в 15:28)
| | Предложения можно писать по разному.
даже совсем без пробелов и в любом регистре,
можно только пробовать угадать опираясь только на регистр букв и пробелы после знаков например
<pre><?php
$txt = 'ничего страшного если в некоторых ячейках массива попадет не одно а 2-3 предложения.
Буду признателен за помощь.. Возможно есть какая-то функция или комбинация функций для осуществления пободного действия.
Tекст img.jpg Мин. сокращение не защитывается если нет последующих Заглавных букв.
Инициалы Х. Х. не защитываются если нет пробелов перед .';
print_r(
$array = preg_split('#(?<=[a-zа-яё\.\s](\.|\?|\!))\s+(?=[A-ZА-ЯЁ])#s', $txt, -1, PREG_SPLIT_NO_EMPTY)
);
?></pre>
|
| |
|
|
|
|
|
|
|
для: sil
(02.05.2008 в 23:39)
| | Эх.. Спасиб за ответ. Но я уже решил проблему написав следующее выражение..
preg_split("/(?<=[А-Яа-яA-Za-z]{3}[.?!])\s+(?=[А-ЯA-Z][А-Яа-яA-Za-z]+)/", $qrutext1); | |
|
|
|
|
|
|
|
для: qru
(05.05.2008 в 00:36)
| | <?
$txt = 'бла раз два';
print_r(preg_split('/[^\w]+/',$txt));
?> | |
|
|
|