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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ПРостенькая регулярка 
V
    Опции темы
MystDeim
Дата 2.8.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



Нужна регулярка срабатывающая на определённые слова или на пустоту.
Что-то вроде этого, но с последними скобками не могу определиться
Код

^(word1)|(word2)|([^.]*)$

Пробовал и просто пустую оставлять (), не работает...
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
Kallisto
Дата 2.8.2009, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

if ( preg_match("/(word1|word2|word3|word4|word5)/", $string) or strlen(trim($string))==0) exit("off");

PM MAIL   Вверх
MystDeim
Дата 2.8.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



Kallisto
Это всё понятно, нужно именно в одну регулярку запихнуть.
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
youri
Дата 3.8.2009, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



и что не срабатывает?
Код

preg_match('/^word1|word2|$/', '', $m);
var_dump($m);

p.s. зачем вообще все те скобки?
PM   Вверх
Kallisto
Дата 3.8.2009, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В одном так:
Код

if ( preg_match("/((word1|word2|word3|word4|word5)|(^$))/", $string)) exit("off");

PM MAIL   Вверх
youri
Дата 3.8.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ты изменил семантику regexp'а, хотя может ТС этого и хотел. Но скобки зачем?
PM   Вверх
MystDeim
Дата 3.8.2009, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



youri, Такая, к сожалению, не работает, но насчёт скобок вы правы, можно без них.
У меня вот такая заработала: 
Код

$arr = array('', 'word1', 'word2', 'a', 'abcd');
foreach ($arr as $string) {
    preg_match('/^word1|word2|^$$/', $string, $matches);
    var_dump($matches);
}

--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
Kallisto
Дата 3.8.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я привык чтобы все было очевидно.
Мухи отдельно - котлеты отдельно.
PM MAIL   Вверх
youri
Дата 3.8.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MystDeim, двойное $$ точно не нужно. Кроме того твой вариант не работает на строке 'aword2'

я сам ошибся. Должно быть так
Код

preg_match('/^(word1|word2|)$/', $string, $matches);

или
Код

preg_match('/^word1$|^word2$|^$/', $string, $matches);

но так длиннее

p.s. предпочел бы на ты, если не против

Это сообщение отредактировал(а) youri - 3.8.2009, 14:27
PM   Вверх
MystDeim
Дата 3.8.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



youri, Спасибо, твой вариант работает!
Проблема решена.
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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