Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
#1

Как найти предложения, которые начинаются с большой буквы?

11.05.2018, 22:46. Просмотров 819. Ответов 16
Метки нет (Все метки)

Всем привет! Есть текст и каждое предложение начинается с большой буквы, но в конце нет точки.
Пример:
Тут какой-то текст И тут какой-то текст Это другой текст

Как разделить эти предложения и поместить в массив?
Например:
$text[0] - Тут какой-то текст
$text[1] - И тут какой-то текст
$text[2] - Это другой текст
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2018, 22:46
Ответы с готовыми решениями:

Кто как думает про алгоритм изменения названия улиц с большой буквы?
Добрый день, Какой алгоритм был бы наиболее простым и удобным, если у нас...

Вывод строк, которые начинаются с определенной буквы.
Мне нужно вывести из базы данных только те строки которые начинаются с...

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

Подсчет количества слов, которые начинаются с гласных букв
Добрый день! Помогите, пожалуйста!!! Задали лабу по PHP. Задание: подсчитать...

Определить количество слов, которые начинаются и заканчиваются одной и той же буквой.
Дана строка, состоящая из русских слов, разделенных пробелами (одним или...

16
Lazy_Den
2931 / 2610 / 1317
Регистрация: 15.01.2014
Сообщений: 5,733
11.05.2018, 23:05 #2
PHP
1
2
3
<?php
$str = 'Тут какой-то текст И тут какой-то текст Это другой текст';
$arr = preg_split('/\s(?=[А-ЯЁA-Z])/u', $str);
0
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
12.05.2018, 06:25  [ТС] #3
Lazy_Den, не работает. Пробовал вывести на экран, но пусто
0
Lazy_Den
2931 / 2610 / 1317
Регистрация: 15.01.2014
Сообщений: 5,733
12.05.2018, 10:36 #4
Цитата Сообщение от Риназ Посмотреть сообщение
не работает
Оно-то работает, но возможно, что вы не обо всём рассказали. Показывайте реальный участок текста и код, относящийся к задаче.
0
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
12.05.2018, 10:54  [ТС] #5
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Показывайте реальный участок текста и код, относящийся к задаче.
Да нет никакого кода, просто текст.
Цитата Сообщение от Lazy_Den Посмотреть сообщение
Оно-то работает,
Да по ссылке работает, а у меня нет. Я даже пробовал создать отдельный файл и поместил код как вы написали, но пустая страница

Добавлено через 4 минуты
А нет, все. Проблема была из-за кодировки. У меня стоял windows-1251, поменял на utf8, все заработало. Вопрос: Как сделать чтобы он работал в windows-1251?
0
Lazy_Den
2931 / 2610 / 1317
Регистрация: 15.01.2014
Сообщений: 5,733
12.05.2018, 12:11 #6
Лучший ответ Сообщение было отмечено Риназ как решение

Решение

Цитата Сообщение от Риназ Посмотреть сообщение
Как сделать чтобы он работал в windows-1251?
Попробуйте такой вариант:
PHP
1
2
$str = 'Тут какой-то текст И тут какой-то текст Это другой текст';
$arr = preg_split('/\s(?=\p{Lu})/u', iconv('cp1251','utf-8',$str));
Однако, так и напрашивается вопрос: "Зачем и почему UTF-8 не устраивает?".
1
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
12.05.2018, 12:14  [ТС] #7
Зачем и почему UTF-8 не устраивает?".
Для другого кода не подходит.
0
Lazy_Den
2931 / 2610 / 1317
Регистрация: 15.01.2014
Сообщений: 5,733
12.05.2018, 12:19 #8
Цитата Сообщение от Риназ Посмотреть сообщение
Для другого кода не подходит.
Дело ваше, но я бы предпочел изменить этот другой код, чем оставаться на кодировке cp1251
0
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
12.05.2018, 13:18  [ТС] #9
Lazy_Den, а почему вам cp1251 не нравится?

Добавлено через 4 минуты
Спасибо! Код, который вы написали выше, работает с cp1251.
Не могли посоветовать какую нибудь обучалочку про: /\s(?=[А-ЯЁA-Z])/u(я просто не знаю как они называются) и т.п?

Добавлено через 35 минут
Кажется я рано радовался( Т.к. у меня стоит кодировка cp1251, то ваш код, как я понял преобразует cp1251 на utf8. Поэтому когда я вывожу текст на экран, вместо текста каракули.
0
Lazy_Den
2931 / 2610 / 1317
Регистрация: 15.01.2014
Сообщений: 5,733
12.05.2018, 13:51 #10
Цитата Сообщение от Риназ Посмотреть сообщение
а почему вам cp1251 не нравится?
Я не теоретик и не возьмусь правильно описать преимущества UTF-8, но если с точки зрения практика, то перейдя в своё время на UTF-8, я больше никогда не сталкивался с проблемами аналогично вашей. А столкнулся бы с множеством: большинство API, Ajax - работают именно с UTF-8, для многоязычных сайтов, которые я создавал и поддерживаю сейчас, пришлось бы держать в каждой руке по два бубна, чтобы они нормально работали. Все символы, которые в принципе описаны в таблице символов, поддерживаются UTF-8 без проблем, что не скажешь про cp1251. Там, если не ошибаюсь, только 255 символов, а в UTF-8 > 100 тысяч.

Добавлено через 1 минуту
Цитата Сообщение от Риназ Посмотреть сообщение
когда я вывожу текст на экран, вместо текста каракули.
Делайте обратное преобразование кодировки, пробегаясь по массиву строк.

Добавлено через 2 минуты
Цитата Сообщение от Риназ Посмотреть сообщение
Кажется я рано радовался
Поверьте, если занятие веб-разработками у вас в долгосрочных планах, то это мизерная проблемка, по сравнению с теми, которые вас ждут в дальнейшем, если не перейдете на UTF-8.
0
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
12.05.2018, 14:38  [ТС] #11
Lazy_Den, я пробовал преобразовать, но в массив записались только буквы.
Я тоже чаще всего работаю на utf-8, Но в этот раз пришлось выбрать cp1251, так как для другого файла обязательно нужен cp1251, utf-8 он не работает ни при каких обстоятельствах.
0
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
13.05.2018, 15:53  [ТС] #12
Lazy_Den, У меня ещё один вопрос: а если в тексте есть слова начинающие с большой буквы(например ФИО), как быть?
0
Lazy_Den
2931 / 2610 / 1317
Регистрация: 15.01.2014
Сообщений: 5,733
13.05.2018, 21:17 #13
Цитата Сообщение от Риназ Посмотреть сообщение
например ФИО
Для аббревиатуры, как вариант, можно попробовать сделать условие: Прописная буква, за которой не следует тоже прописная
PHP
1
$arr = preg_split('/\s(?=(\p{Lu}[^\p{Lu}]))/u', $str);
0
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
13.05.2018, 21:24  [ТС] #14
Lazy_Den, а если будет так:
Привет Фамилия Имя
Как дела Фамилия
0
Lazy_Den
2931 / 2610 / 1317
Регистрация: 15.01.2014
Сообщений: 5,733
13.05.2018, 21:42 #15
Цитата Сообщение от Риназ Посмотреть сообщение
а если будет так
Тут уже ИИ подключать нужно
Может расскажите откуда эти данные берутся, в каком формате к вам поступают? Возможно, что найдутся другие способы их обработки.
0
Риназ
12 / 2 / 2
Регистрация: 16.06.2017
Сообщений: 515
13.05.2018, 21:52  [ТС] #16
Lazy_Den, Текст берётся с другого источника, поэтому я не могу предугадывать, какой именно текст будет.
Ну ладно, спасибо!
0
Lazy_Den
2931 / 2610 / 1317
Регистрация: 15.01.2014
Сообщений: 5,733
13.05.2018, 22:00 #17
Цитата Сообщение от Риназ Посмотреть сообщение
не могу предугадывать, какой именно текст будет.
Для использования регулярок, нужно точно знать определенные и четкие закономерности в строках. Если такие найти не предоставляется возможным, то надо рассматривать другие способы. Именно поэтому я и спрашивал про формат исходных данных. Не исключаю, что там присутствует некий разделитель предложений, но вы это не заметили. Например, тот же символ табуляции.
0
13.05.2018, 22:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2018, 22:00

Функция rename не меняет имена файлов которые начинаются с "-"
Уважаемые. Есть код: $dir = 'C:/img'; $png_jpg = scandir($dir); unset...

Нужно вывести все элементы массива которые начинаются с определенных символов
Доброго всем времени суток! Собственно проблема в следующем. Есть таблица в...

Напечатать в алфавитном порядке все слова, которые начинаются с большой буквы
Напечатать в алфавитном порядке все слова, которые начинаются с большой буквы и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru