Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572

Как считать слово от 3 символов?

24.04.2014, 15:29. Показов 1520. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть скрипт который считает количество слов и их плотность в тексте в % (кому нужен полный скрипт тут http://pastebin.com/a6FcEw86) если кратко то работает так:

PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
// чищу текст от спецсимволов
$clean = preg_replace('/[!~`@|.,:;?&)(\"><№#\\\%\\/^\'*$_]/u', '', $text);
 
// делаю массив из строки в виде слов разделённых пробелами
$massiv = explode(" ", $clean);
 
// сортирую полученный массив
$massiv=array_count_values($massiv);
arsort($massiv);
 
// считаю общее количество слов что бы потом разделить и посчитать процент
$sum = array_sum($massiv);
Вопрос: как сделать так что бы словами считались только те в которых 3 символа или больше?

Догадываюсь что для этого надо из строки $clean наверное убрать все элементы где меньше 3 символов. А потом уже остаток в массив объединять. Но как это сделать? Может регулярку доработать так что бы она меньше 3 символов всё убирала?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.04.2014, 15:29
Ответы с готовыми решениями:

Как считать слово из Textbox
Делаю приложение на Visual studio express. Нужно считать слово из Textbox и сравнить его так сказать с правильным ответом. Помогите,...

Как считать n-ое слово в строке
Как найти любое (n-ное) слово в строке? Слова(группа слов) разделяются запятыми

Как считать 5 и 8 слово из файла
Дан файл. Как считать пятое и восьмое слово из него?

7
 Аватар для crautcher
2449 / 2300 / 597
Регистрация: 27.05.2011
Сообщений: 7,837
24.04.2014, 15:49
Цитата Сообщение от marrk Посмотреть сообщение
Вопрос: как сделать так что бы словами считались только те в которых 3 символа или больше?
PHP Скопировано
1
2
3
4
5
<?
$text = "1 12 123 1234       123 12 1";
$clean = preg_replace('/[!~`@|.,:;?&)(\"><№#\\\%\\/^\'*$_]/u', '', $text);
preg_match_all('/[^\ ]{3,}/u', $clean, $clean);
var_dump($clean);
Code Скопировано
1
2
3
4
5
6
7
8
9
10
11
array(1) {
  [0]=>
  array(3) {
    [0]=>
    string(3) "123"
    [1]=>
    string(4) "1234"
    [2]=>
    string(3) "123"
  }
}
1
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
24.04.2014, 17:42  [ТС]
В целом работает, но применительно к этому скрипту при попытке установить preg_match_all в это место начинает ругаться на строку с $massiv = explode(" ", $clean);
0
 Аватар для crautcher
2449 / 2300 / 597
Регистрация: 27.05.2011
Сообщений: 7,837
24.04.2014, 18:03
Цитата Сообщение от marrk Посмотреть сообщение
$massiv = explode(" ", $clean);
Ну так у тебя уже есть массив вместо строки, прег матч его сделал
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
24.04.2014, 18:08  [ТС]
Чё-то этот массив ему не прокатывает. Сделал так:

PHP Скопировано
1
2
3
4
5
6
7
    $clean = preg_replace('/[!~`@|.,:;?&)(\"><№#\\\%\\/^\'*$_]/u', '', $text);
    preg_match_all('/[^\ ]{3,}/u', $clean, $massiv);
 
// $massiv = explode(" ", $clean);
 
    $massiv=array_count_values($massiv);
    arsort($massiv);
Пишет Can only count STRING and INTEGER values! в строке $massiv=array_count_values($massiv);
А если комментарий снять то работает без ошибок, но к сожалению меньше 3 по-прежнему считает...
0
 Аватар для crautcher
2449 / 2300 / 597
Регистрация: 27.05.2011
Сообщений: 7,837
24.04.2014, 18:13
Лучший ответ Сообщение было отмечено marrk как решение

Решение

там массив массиве
PHP Скопировано
1
2
3
4
    $clean = preg_replace('/[!~`@|.,:;?&)(\"><№#\\\%\\/^\'*$_]/u', '', $text);
    preg_match_all('/[^\ ]{3,}/u', $clean, $massiv); 
    $massiv = isset($massiv[0]) ? $massiv[0] : explode(" ", $clean); 
    $massiv=array_count_values($massiv)
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
24.04.2014, 18:20  [ТС]
Всё работает! Прочитал я хэлп по isset но так и особо понял что вы сделали ))
Не могли бы вы пояснить немного 3 строку по возможности?
0
 Аватар для crautcher
2449 / 2300 / 597
Регистрация: 27.05.2011
Сообщений: 7,837
24.04.2014, 18:27
Подстарховал, если прег метч не справится, хотя не думаю, что такое возможно

Добавлено через 1 минуту
В теории прег матч должна создать $massiv[0], но если она вызовет ошибку, то $massiv[0] не будет и тогда мы страхуем експлоудом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2014, 18:27
Помогаю со студенческими работами здесь

Как считать слово из строки в файле?
Есть строки с данными о препаратах в текстовом файле в виде &quot;Наименование&quot; &quot;Цена&quot; &quot;Состав&quot;. &quot;Состав&quot; состоит из...

Как считать первое слово из каждой строки?
Как считать первое слово из каждой строки из файла и записать в другой файл столбиком? Пробовал использовать char, string, getline и...

Считать из первого файла ключевое слово и цвет и выделить слово во втором файле
считать из 1 файла ключевое слово и цвет и выделить слово во 2ом файле. файлы html. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Как считать слово заключенное между статическими скобками
Доброе всем время суток Есть вопрос )) Как с сайта считать нужное слово заключенное между двумя строками ? Вот код со...

Как считать слово из файла в поле структуры до запятой?
есть текстовый файл Петров, Иван, Федорович, 1, 1994,Ч ; Сидоров,Петр,Михайлович, 2, 1994,Ч ; Соколов,Иван,Федорович, 3, 1994,Ч; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер