С нами с 11.03.13
Сообщения: 174
Рейтинг: 53
|
Добавлено: 21/04/14 в 22:30 |
Решение найдено - файл с текстом был в кодировки windows-1251, а скрипт в UTF-8.
Хочу получить из текста предложения, использую.
Код: [развернуть] | $pattern = "|[А-Я](.*?)[.!?]|si"; |
Но на ряду со стандартными предложениями - которые начинаются с заглавной и заканчиваются .?!. Регулярка тянет и такие, начинающиеся с дефиса.
Ex.
— Хм… — Он будет очень послушный кот.
Что нужно подкорректировать, что бы выдавались только предложения где первая буква заглавная.
Всем заранее благодарен
Последний раз редактировалось: Reminder (22/04/14 в 09:39), всего редактировалось 1 раз
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7614
Рейтинг: 5760
|
Добавлено: 21/04/14 в 22:39 |
модификатор i попробуй убрать
|
|
|
|
С нами с 11.03.13
Сообщения: 174
Рейтинг: 53
|
Добавлено: 21/04/14 в 22:54 |
Sterx: - по прежнему предложения с дефисами тоже отдаются (
Массив
[1] => Конрад Лоренц Вместо вступления: Обыкновенная история Вы завели себе кота?
[2] => Вы долго выбирали, держали домашний совет.
[3] => — Нет, — говорил Хозяин, — кот в доме, это излишество.
[4] => — Милый, — ворковала Хозяйка, — он тебе ничуть не помешает, он будет невидимым и неслышимым… — Но вонючим, — не сдавался Хозяин.
[5] => — Нет-нет, — хватала его за рукав Хозяйка, — сейчас коты не такие…они не пахнут!
[6] => Их опрыскивают!
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 22/04/14 в 08:08 |
Пример текста и что из этого текста надо забрать?
|
|
|
|
+ + +
С нами с 18.03.14
Сообщения: 43
Рейтинг: 30
|
Добавлено: 22/04/14 в 08:54 |
дык все работает.
Код: | <pre>
<?
$s = 'Конрад Лоренц Вместо вступления: Обыкновенная история Вы завели себе кота?
Вы долго выбирали, держали домашний совет.
— Нет, — говорил Хозяин, — кот в доме, это излишество.
— Милый, — ворковала Хозяйка, — он тебе ничуть не помешает, он будет невидимым и неслышимым… — Но вонючим, — не сдавался Хозяин.
— Нет-нет, — хватала его за рукав Хозяйка, — сейчас коты не такие…они не пахнут!
Их опрыскивают!';
preg_match_all('~[А-Я](.*?)[\.\!\?]~s', $s, $m);
var_dump($m[0]);
|
резалт: Код: | array(6) {
[0]=>
string(74) "Конрад Лоренц Вместо вступления: Обыкновенная история Вы завели себе кота?"
[1]=>
string(42) "Вы долго выбирали, держали домашний совет."
[2]=>
string(52) "Нет, — говорил Хозяин, — кот в доме, это излишество."
[3]=>
string(126) "Милый, — ворковала Хозяйка, — он тебе ничуть не помешает, он будет невидимым и неслышимым… — Но вонючим, — не сдавался Хозяин."
[4]=>
string(78) "Нет-нет, — хватала его за рукав Хозяйка, — сейчас коты не такие…они не пахнут!"
[5]=>
string(15) "Их опрыскивают!"
}
|
никаких дефисов. что-то ты не то делаешь...
|
|
|
|
С нами с 11.03.13
Сообщения: 174
Рейтинг: 53
|
Добавлено: 22/04/14 в 09:37 |
Проблема была из за того что файл с текстом имел кодировку windows-1251, а скрипт UTF-8, после преобразования кодировки Код: [развернуть] | $output = iconv('windows-1251', 'UTF-8', $output); |
регулярка отработала правильно
|
|
|
|
+ + +
С нами с 18.03.14
Сообщения: 43
Рейтинг: 30
|
Добавлено: 22/04/14 в 09:48 |
ну, ты на всякий случай экранируй символы .!?
я может чего забыл, но [.!?] - точка - любой символ. знак вопроса после ! - ноль или более воскл... то есть, правильнее будет [\.\!\?] - оно может и работает, но на всякий случай лучше экранировать... (да-да, тут в квадратных кавычках мы задаем набор символов, но это потом может стать причиной непоняток и багов...)
удачи!
всем мир!
|
|
|
|