Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как посчитать и обрезать предложение? 
:(
    Опции темы
DenWPF
Дата 20.2.2011, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Нужно по считать количество слов в строке и обрезать до 20 слов.

вот то что я пытался сделать:

Цитата

О КОМПАНИИ ОБОРУДОВАНИЕ МАТЕРИАЛЫ ПРОИЗВОДСТВО КОНТАКТЫ Поиск по сайту О компании. Компания atil существует с 2001г. и заслужила репутацию у ведущих обувных производителей, мастерских и салонов обуви. Мы позиционируемся, как компания, предоставляющая своим Клиентам только проверенные на практике технологии и продукты. Нашими услугами пользуются не только производители, но и мастерские по ремонту обуви см. список сиже. Мы предлагаем решения производственных задач, основываясь на передовых технологиях ведущих производителей. Использование нашего оборудования и материалов позволяет повысить доходность производственного процесса и существенно снизить эксплуатационные расходы. Мы осуществляем предпродажную подготовку обуви, аксессуаров и изделий из кожи, нубука, замши и заменителей для оптовых продавцов и розничных сетей полировка, покраска и перекраска, исправление дефектов. Наши решения позволяют в кратчайшие сроки подготовить товар к реализации!!! Лучшие мастерские по ремонту обуви Скачать одним файлом. г.Одесса, ул.Педагогическая,24, 715-37-61 г.Одесса, ул.ТенистаяЧерняховского, 703-12-49 г.Одесса, ул.Шишкина,503, 770-52-49 г.Одесса, Фонтанская дорога,16, 097-51-84-674 г.Одесса,ул.Ильфа и Петрова,43, 770-92-49 г.Одесса, Лермонтовский пер.,2, 799-33-65 Полезные советы Харьков Онлайн atil Дизайн: Шаповалова Катерина Разработка: Капара Виталий

print_r(str_word_count($str, 2));
Array ( [209] => atil [2013] => - [2016] => - [2092] => - [2095] => - [2147] => - [2150] => - [2215] => - [2218] => - [2221] => - [2286] => - [2289] => - [2354] => - [2357] => - [2428] => atil ) 


print_r(str_word_count($str, 1));
Array ( [0] => atil [1] => - [2] => - [3] => - [4] => - [5] => - [6] => - [7] => - [8] => - [9] => - [10] => - [11] => - [12] => - [13] => - [14] => atil ) 


print_r(str_word_count($str, 1, ' '));
Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => atil [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => [17] => [18] => [19] => [20] => [21] => [22] => [23] => [24] => [25] => [26] => [27] => [28] => [29] => [30] => [31] => [32] => [33] => [34] => [35] => [36] => [37] => [38] => [39] => [40] => [41] => [42] => [43] => [44] => [45] => [46] => [47] => [48] => [49] => [50] => [51] => [52] => [53] => [54] => [55] => [56] => [57] => [58] => [59] => [60] => [61] => [62] => [63] => [64] => [65] => [66] => [67] => [68] => [69] => [70] => [71] => [72] => [73] => [74] => [75] => [76] => [77] => [78] => [79] => [80] => [81] => [82] => [83] => [84] => [85] => [86] => [87] => [88] => [89] => [90] => [91] => [92] => [93] => [94] => [95] => [96] => [97] => [98] => [99] => [100] => [101] => [102] => [103] => [104] => [105] => [106] => [107] => [108] => [109] => [110] => [111] => [112] => [113] => [114] => [115] => [116] => [117] => [118] => [119] => - [120] => - [121] => [122] => [123] => - [124] => - [125] => [126] => [127] => - [128] => - [129] => [130] => [131] => [132] => - [133] => - [134] => - [135] => [136] => [137] => [138] => - [139] => - [140] => [141] => [142] => [143] => - [144] => - [145] => [146] => [147] => atil [148] => [149] => [150] => [151] => ) 


word_count($str);
27




Код

function word_count($html) {
  $wc = strip_tags($html);
  $pattern = "#[^(\w|\d|\'|\"|\.|\!|\?|;|,|\\|\/|\-|:|\&|@)]+#";
  $wc = trim(preg_replace($pattern, " ", $wc));
  $wc = trim(preg_replace("#\s*[(\'|\"|\.|\!|\?|;|,|\\|\/|\-|:|\&|@)]\s*#", " ", $wc));
  $wc = preg_replace("/\s\s+/", " ", $wc);
  $wc = explode(" ", $wc);
  $wc = array_filter($wc);
  return count($wc);

}



Это понятно всё нормально не отработало. 

Я конечно могу просто посчитать через цикл количество слов, и остановить на 20, но как по мне это наверное не совсем хороший вариант.


у меня есть регулярка, она выдирает предложения 

Код

    preg_match_all('#([^.!?].+?)[.!?]+#', $str, $out);
    return $out[0];


было бы шикарно туда запихнуть проверку, что бы сразу обрезала по словам.
PM MAIL   Вверх
Dima 2015
Дата 21.2.2011, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 287
Регистрация: 16.3.2008
Где: SPb

Репутация: 2
Всего: 2



Цитата

Я конечно могу просто посчитать через цикл количество слов, и остановить на 20, но как по мне это наверное не совсем хороший вариант.

Не знаю, по-моему нормальный вариант... Единственное конечно посимвольно придется идти, но 20 слов это около 200 итераций будет - копейки же.

Так если подумать - если грамотно написан текст, то разделитель м/у словами - всегда пробел. Можно explode вообще сделать а потом первые 20 элементов склеить назад пробелом, но это если текст не очень большой. Если очень большой то дешевле перебором посимвольно идти...

Еще может регулярки копнуть, нет там такого - найти $i-тое вхождение паттерна?
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.