Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.07.2006, 15:17
sarah вне форума Посмотреть профиль Отправить личное сообщение для sarah Посетить домашнюю страницу sarah Найти все сообщения от sarah
  № 1  
Ответить с цитированием
sarah

Регистрация: Mar 2001
Сообщений: 40
Отправить сообщение для sarah с помощью ICQ
По умолчанию вопрос про ereg

Всем здрасьте.

Может кто сталкивался с такой проблемой: надо сделать проверку на частичное совпадение 2х переменных.
Например есть $a='123'.
Надо чтобы зафиксировалось совпадение с $b, и если $b меньше $a (напр. $b='1'), и если $b больше $a (при $b='12345').

В php4 эта задача решалась легко -
if (ereg($a, $b) || ereg($b, $a)) {
сделать то-то;
}

А в php5 возникает ошибка:
Warning: ereg() [function.ereg]: REG_BADRPT

Чего делать??

Старый 25.07.2006, 17:36
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 2  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
Судя по примеру, функция ereg здесь вообще не применима, не понятно как она работала раньше... Постарайся по-точнее сформулировать задачу, ибо первый аргумент в ereg вовсе не переменная, а регулярное выражение, шаблон для поиска совпадения во втором аргументе.
Если сравнивается количество знаков переменных, подойдет функция strlen...
__________________
X

Старый 25.07.2006, 17:49
sarah вне форума Посмотреть профиль Отправить личное сообщение для sarah Посетить домашнюю страницу sarah Найти все сообщения от sarah
  № 3  
Ответить с цитированием
sarah

Регистрация: Mar 2001
Сообщений: 40
Отправить сообщение для sarah с помощью ICQ
Почему не применима ф-ция ereg? Может ведь на месте первого аргумента вместо регулярного выражения стоять переменная, если эта функция используется в цикле.
Сравнивать нужно именно значения, а не число символов.

Опишу задачу более конкретно, может это внесет ясность.
Есть список телефонов, среди которых производится поиск. в списке номера представлены как с кодом города, так и без него. В поисковую форму могут вноситься тоже номера и с кодом, и без кода. И если в базе есть номер скажем 123123, то он должен найтись и если в форму будет вбито 123123, и если (495)123123. Так понятнее?

Старый 25.07.2006, 18:24
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 4  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
Да, так понятнее... А в базе номера в одном формате, или дефизов ещё может несколько быть в разных местах?
__________________
X

Старый 25.07.2006, 18:36
sarah вне форума Посмотреть профиль Отправить личное сообщение для sarah Посетить домашнюю страницу sarah Найти все сообщения от sarah
  № 5  
Ответить с цитированием
sarah

Регистрация: Mar 2001
Сообщений: 40
Отправить сообщение для sarah с помощью ICQ
всякие дефисы, пробелы и скобочки удаляются, сравнивать нужно только наборы цифр

Старый 25.07.2006, 18:50
bunker6 вне форума Посмотреть профиль Отправить личное сообщение для bunker6 Посетить домашнюю страницу bunker6 Найти все сообщения от bunker6
  № 6  
Ответить с цитированием
bunker6
for the lulz
 
Аватар для bunker6

Регистрация: Jul 2001
Адрес: Princeton, NJ, USA
Сообщений: 4,769
Отправить сообщение для bunker6 с помощью ICQ
Тогда не проще будет отрезать substr'ом последние семь цифр и сравнивать их? Всяко пошустрее должно работать, чем регэкспы.
__________________
Jan tan ma pi pona tawa ma ale.

Старый 25.07.2006, 18:58
sarah вне форума Посмотреть профиль Отправить личное сообщение для sarah Посетить домашнюю страницу sarah Найти все сообщения от sarah
  № 7  
Ответить с цитированием
sarah

Регистрация: Mar 2001
Сообщений: 40
Отправить сообщение для sarah с помощью ICQ
bunker6, а это такая хитрая база, в которой кроме внешних телефонов содержатся и внутренние, состоящие только из 3х цифр

Старый 25.07.2006, 20:07
Samodelkin вне форума Посмотреть профиль Отправить личное сообщение для Samodelkin Найти все сообщения от Samodelkin
  № 8  
Ответить с цитированием
Samodelkin

Регистрация: Jul 2005
Адрес: Москва
Сообщений: 452
Отправить сообщение для Samodelkin с помощью ICQ
ну так проверяй еще и длину) и что мешает использовать LIKE?


Последний раз редактировалось Samodelkin; 25.07.2006 в 20:21.
Старый 25.07.2006, 22:55
bunker6 вне форума Посмотреть профиль Отправить личное сообщение для bunker6 Посетить домашнюю страницу bunker6 Найти все сообщения от bunker6
  № 9  
Ответить с цитированием
bunker6
for the lulz
 
Аватар для bunker6

Регистрация: Jul 2001
Адрес: Princeton, NJ, USA
Сообщений: 4,769
Отправить сообщение для bunker6 с помощью ICQ
Цитата:
Сообщение от sarah
…содержатся и внутренние, состоящие только из 3х цифр
  1. Ничто не мешает отрезать с конца столько цифр, сколько есть в запросе.
  2. Что-то мне подсказывает, что ы идете по порочному пути. (495) 123-45-67 и внутренний 567 — сильно разные номера. Находиться по одному запросу они не должны.
__________________
Jan tan ma pi pona tawa ma ale.

Старый 26.07.2006, 12:08
sarah вне форума Посмотреть профиль Отправить личное сообщение для sarah Посетить домашнюю страницу sarah Найти все сообщения от sarah
  № 10  
Ответить с цитированием
sarah

Регистрация: Mar 2001
Сообщений: 40
Отправить сообщение для sarah с помощью ICQ
Samodelkin, да видимо придется длину проверять. Эх, надеялась, что можно легким движением руки с eregом что-то сделать. Тем более, что в php4 это получалось.
Щас постараюсь объяснить почему LIKE не получается использовать. В базе телефоны хранятся со всеми черточками и скобками. Для успешного сравнения надо избавиться от всех лишних символов. В введенном пользователем номере это просто, а с базовым возникают проблемы. Получается такая примерно штука:

SELECT * FROM BASE WHERE PHONE LIKE '123123';

Если PHONE будет выглядеть как 12-31-23 или 123-123, то он по этому запросу не найдется. Надеюсь не очень запутанно объяснила

bunker6,
1 - в запросе ведь может содержаться больше цифр, чем в базе. в этом и была основная загвоздка.
2 - задача поставлена именно так.

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.