Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2008
Помог: 0 раз(а)
Есть текст (статья) необходимо от начала статьи получить первые минимум 200 симвалов до ближайшего пробела или знака препинания. В общем чтоб слова целиком оставались.
Nestor
Отправлено: 15 Июня, 2010 - 22:04:30
Частый гость
Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2009
$test='Есть текст (статья) необходимо от начала статьи получить первые минимум 200 симвалов до ближайшего пробела или знака препинания. В общем чтоб слова целиком оставались.';
----- "Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог
JustUserR
Отправлено: 16 Июня, 2010 - 12:55:03
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
inkor пишет:
Есть текст (статья) необходимо от начала статьи получить первые минимум 200 симвалов до ближайшего пробела или знака препинания. В общем чтоб слова целиком оставались.
Если ваш текст или статья достаточно большого размера и не имеет смысл ее целиком считвать и загружать в память можете поступить так - используете поблочное K-символное считывание и первоначально безусловно считываете N символов а потом в оставляемся блоке берете по символу до тех пора пока не встретите ограничитель слова - это хорошо тем что если текст взятый с внешнего источника автоматически окажется без пробелов или по причине несовпадения кодировок регулярное выражение и строковые функции не сработают как надо то вы получить в крайнем случае текст длиной N+K
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
movEAX
Отправлено: 16 Июня, 2010 - 15:36:28
Частый посетитель
Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009
$test='Если ваш текст или статья достаточно большого размера и не имеет смысл ее целиком считвать и загружать в память можете поступить так - используете поблочное K-символное считывание и первоначально безусловно считываете N символов а потом в оставляемся блоке берете по символу до тех пора пока не встретите ограничитель слова - это хорошо тем что если текст взятый с внешнего источника автоматически окажется без пробелов или по причине несовпадения кодировок регулярное выражение и строковые функции не сработают как надо то вы получить в крайнем случае текст длиной N+K';
$test='Есть текст (статья) необходимо от начала статьи получить первые минимум 200 симвалов до ближайшего пробела или знака препинания. В общем чтоб слова целиком оставались.';
Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009 Откуда: Казахстан
Помог: 1 раз(а)
inkor пишет:
отлично! работает , спасибо
Не за что
----- "Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог
JustUserR
Отправлено: 17 Июня, 2010 - 11:13:42
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
movEAX пишет:
if(strstr(' .!?,', $test{-1 + $max++})) break;
Вероятно данную функцию можно ускорить если не использовать в цикле строковой функции которая как правило работает не очень быстро - например можно попробовать сравнить с несколькими if-ами для данной позиции строки или с in_array для указанного набора символов
Также стоит изменить условие цикла чтобы он не был бесконечным по определению - а например поставить максимальное число с дальнешей безусловной отсчекой строки Ведь если данные берутся из внешнего источника то не исключена проблема с кодировкой - и нужно обезопаситься таким образом чтобы какой-то источник данных с другой кодировкой не создал бесконечный цикл а вместе с ним нагрузку на сервер
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
iNazgul
Отправлено: 03 Сентября, 2011 - 01:52:57
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Сент. 2011 Откуда: Смоленск
$test='Есть текст (статья) необходимо от начала статьи получить первые минимум 200 симвалов до ближайшего пробела или знака препинания. В общем чтоб слова целиком оставались.';
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.