За последние 24 часа нас посетили 17560 программистов и 1314 роботов. Сейчас ищут 1439 программистов ...

Проблема с "/"

Тема в разделе "Регулярные выражения", создана пользователем Intrerio, 21 авг 2015.

  1. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Здраствуйте. Проблема вот в чем:
    Есть в базе данных запись типа МВ/НВ. Есть форма которая методом POST передает данную запись,а последующий код проверяет есть ли в БД строчка с этой записью. В следствии проверка проваливаеться потому что я получаю вместо МВ/НВ только НВ. Пробую preg_match("/([a-zA-Zа-яА-ЯіІ]*)([\-0]*)([\-0-9]+)+/u ", "$_POST[start]", $start); но получаю все то же. Кстати код preg_match("/([a-zA-Zа-яА-ЯіІ]*)([\-0]*)([\-0-9]+)+/u ", "$_POST[start]", $start); я использую для других целей и не могу понять что нужно в него добавить чтоб заработало.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    МВ/НВ - что это? Меняется по каким законам или статическая строка?
     
  3. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Статистическая строка. Это код продукта. Он может быть разным (АЕ,АИ,МВ-АО и т.д.) хочеться найти универсальное решение которое будет разбивать строку на части. Сама строка полностю выглядит так серияномер (МВ/НВ1 или АЕ1 или АО1 и т.д.). Вот собственно буквы это серия продукта а цифра это номер продукта. Мне нужно отделять серию от номера.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    "проверка проваливается" — в русском языке пишется без мягкого знака! см. здесь.

    скажи пожалуйста, ты чтоли все записи из БД читаешь в PHP-скрипт чтобы их регуляркой проверить? это АД!
    чем тебя не устраивает … WHERE `x` LIKE 'МВ/%' ?!!
     
  5. Intrerio

    Intrerio Активный пользователь

    С нами с:
    20 мар 2015
    Сообщения:
    176
    Симпатии:
    7
    Ну простите пожалуйста, у меня другой родной язик.
    Я делаю по Вашему принципу. И даже если я делаю так то всеровно WHERE 'x' LIKE 'МВ/НВ' не пропускает, получаеться лишь НВ, а первое пропадает.
    Суть в чем. В форме проходит поиск диапазона номеров продукта (МВ/НВ1,МВ/НВ2 и т.д.) с помощью autocomplete.Тоесть я указую первый и последний номер и после чего система автоматом заполняет диапазон номеров. После чего я выбираю агента которому передается продукт. И после нажатия кнопки передачи, включаеться код который проводит поиск в базе каждого номера (МВ/НВ1 и т.д.) на присутствие номера в базе и если он есть то происходит UPDATE данной строки. Тут начинается дурдом потомучто косая черта экарнирует часть строки и система не может найти в базе данный номер продукта. Да и возможно preg_match который я представил не есть универсальным для вышеописаной задачи. Вот и прошу помощи

    Добавлено спустя 28 минут:
    Один добрый человек подсказал вывод не через регулярку а через var_dump($_POST[start]); . Что кто думает?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    я это понял, поэтому и подсказал. незачем извиняться, надеюсь я тебе помог хотябы в этом.

    пожалуйста не вали в кучу всё подряд. не надо ничего про автокомплит и прочие визуальные элементы. давай ограничимся поиском уже отправленного через форму значения, ок?

    слеш "/" ничего не экранирует. обратный слеш "\" экранирует, да и то это имеет значение когда ты пишешь строковый литерал в коде, а не когда это значение прилетело от пользователя!!!

    еще раз спрошу: почему ты не используешь LIKE для поиска подстроки в базе?!! считывать все строки для проверки в PHP это очень-очень-очень плохой стиль. за такое увольняют. я тебя уверяю:
    LIKE 'МВ%' найдет строки, начинающиеся на 'МВ', а
    LIKE 'МВ/%' найдет строки, начинающиеся на 'МВ/,. а
    LIKE '%МВ%' найдет все строки в которых МВ стоит где угодно в поле.

    Добавлено спустя 3 минуты 8 секунд:
    видимо ты не понял доброго человека. тебя попросили это сделать это чтобы точно знать что в переменной, а не догадываться :)

    Добавлено спустя 1 минуту 42 секунды:
    P.S.
    кстати здесь ошибка. надо писать $_POST['start'] — брать строку в кавычки!