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

Поиск:

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


Бывалый
*


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

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



Здравствуйте.
Тема вынесена в заглавие. Как? При этом нужно вырезать именно слова, а не символы.

Это сообщение отредактировал(а) barcelona - 4.4.2008, 15:03
PM MAIL   Вверх
mishaSL
Дата 4.4.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



barcelona, вот что первое приходит на ум:
Код

<?php

$text = 'слова слова слова мои слова'; // текст
$countWords = 3; //кол-во слов для вырезания
$reg = '#^\b[\w]+\b\s*#i';
for($i=0;$i<$countWords;$i++) {
    $text = preg_replace($reg, '', $text);
}
print $text;

?>



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
barcelona
Дата 4.4.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



mishaSL, регулярное выражение какое-то странное. Не работает.
PM MAIL   Вверх
mishaSL
Дата 4.4.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(barcelona @  4.4.2008,  15:33 Найти цитируемый пост)
mishaSL, регулярное выражение какое-то странное. Не работает. 

работает оно нормально, просто у вас наверное локаль не установлена:
Код

setlocale(LC_ALL, "ru_RU.CP1251", "RUS");
$text = 'слова слова слова мои слова'; // текст
$countWords = 3; //кол-во слов для вырезания
$reg = '#^\b[\w]+\b\s*#i';
for($i=0;$i<$countWords;$i++) {
    $text = preg_replace($reg, '', $text);
}
print $text;



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
ksnk
Дата 4.4.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Осталось только уточнить, что-же такое "вырезать". Отрезать напрочь, напрочь отрезать, как понял это 
mishaSL, или что-то другое...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
barcelona
Дата 7.4.2008, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



У меня упрямо выводится "мои слова".
PM MAIL   Вверх
mishaSL
Дата 7.4.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(barcelona @  7.4.2008,  08:39 Найти цитируемый пост)
У меня упрямо выводится "мои слова". 

Дак так и должно выводиться. Там же комментарии стоят: "кол-во слов для вырезания". Т.е. вырезаем три слова с начала текста.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
sTa1kEr
Дата 9.4.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



Цитата(mishaSL @  4.4.2008,  16:19 Найти цитируемый пост)
$reg = '#^\b[\w]+\b\s*#i';

Зачем \w брать в квадратных скобках? \w сам по себе является набором символов.
Модификатор 'i' так же не нужен, т.к. \w включает в себя символы  обоих регистров.
Зачем нужен цикл? Почему бы одной регуляркой не сделать?
Код

$reg = '/^(\b\w+\b\s*){0,'.$countWords.'}/';

PM MAIL   Вверх
flashaa
Дата 9.4.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ещё вариант - задействовать наконец параметр limit у preg_replace
Цитата

mixed preg_replace  ( mixed $pattern  , mixed $replacement  , mixed $subject  [, int $limit  ] )

Правлю код mishaSL:
Код

setlocale(LC_ALL, "ru_RU.CP1251", "RUS");
$text = 'слова слова слова мои слова'; // текст
$countWords = 3; //кол-во слов для вырезания
$reg = '#^\b[\w]+\b\s*#i';
$text = preg_replace($reg, '', $text, $countWords);
print $text;

Полученные слова можно дальше обработать, если они интересуют по отдельности.
PM MAIL   Вверх
mishaSL
Дата 9.4.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



sTa1kEr, абсолютно согласен со всеми замечаниями. smile 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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