Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Подскажите на счет регулярки
Новая тема
Ответить
цитата
21/04/14 в 22:30
Reminder
Решение найдено - файл с текстом был в кодировки windows-1251, а скрипт в UTF-8.
Хочу получить из текста предложения, использую.
$pattern = "|[А-Я](.*?)[.!?]|si";
Но на ряду со стандартными предложениями - которые начинаются с заглавной и заканчиваются .?!. Регулярка тянет и такие, начинающиеся с дефиса.
Ex.
— Хм… — Он будет очень послушный кот.
Что нужно подкорректировать, что бы выдавались только предложения где первая буква заглавная.
Всем заранее благодарен
Последний раз редактировалось: Reminder (
22/04/14 в 09:39
), всего редактировалось 1 раз
цитата
21/04/14 в 22:39
Sterx
модификатор i попробуй убрать
цитата
21/04/14 в 22:54
Reminder
Sterx:
- по прежнему предложения с дефисами тоже отдаются (
Массив
[1] => Конрад Лоренц Вместо вступления: Обыкновенная история Вы завели себе кота?
[2] => Вы долго выбирали, держали домашний совет.
[3] => — Нет, — говорил Хозяин, — кот в доме, это излишество.
[4] => — Милый, — ворковала Хозяйка, — он тебе ничуть не помешает, он будет невидимым и неслышимым… — Но вонючим, — не сдавался Хозяин.
[5] => — Нет-нет, — хватала его за рукав Хозяйка, — сейчас коты не такие…они не пахнут!
[6] => Их опрыскивают!
цитата
22/04/14 в 08:08
freeek
Пример текста и что из этого текста надо забрать?
цитата
22/04/14 в 08:54
shlemkin
дык все работает.
Код:
<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) "Их опрыскивают!"
}
никаких дефисов. что-то ты не то делаешь...
цитата
22/04/14 в 09:37
Reminder
Проблема была из за того что файл с текстом имел кодировку windows-1251, а скрипт UTF-8, после преобразования кодировки $output = iconv('windows-1251', 'UTF-8', $output);
регулярка отработала правильно
цитата
22/04/14 в 09:48
shlemkin
ну, ты на всякий случай экранируй символы .!?
я может чего забыл, но [.!?] - точка - любой символ. знак вопроса после ! - ноль или более воскл... то есть, правильнее будет [\.\!\?] - оно может и работает, но на всякий случай лучше экранировать... (да-да, тут в квадратных кавычках мы задаем набор символов, но это потом может стать причиной непоняток и багов...)
удачи!
всем мир!
Новая тема
Ответить
Эта страница в полной версии