Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Помогите с условием в regex
Если search и replace - массивы, то str_replace() использует каждое значение из соответствующего массива для поиска и замены в subject. Если в массиве replace меньше элементов, чем в search, в качестве строки замены для оставшихся значений будет использована пустая строка. Если search - массив, а replace - строка, то эта строка замены будет использована для каждого элемента массива search. Обратный случай смысла не имеет.
lortine
Отправлено: 27 Августа, 2015 - 15:38:36
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015
Помог: 0 раз(а)
Спасибо, а подскажете если нужно вытащить только регулярным выражением в активной группе?
Напр. (\d+[,.]?\d+)\sx\s(\d+[,.]?\d+)\sx\s(\d+[,.]?\d+) описывает только первые цифры и сгодилось бы для точных шаблонных параметров 1 x 2 x 3, а нужно условие аля "если в начале есть число то берем число второе(следующее за ним) за ним.
Для тест можна использовать https://regex101[dot]com/
PS.
С синтаксисом дружу пока очень плохо соотв. поэтому и прошу помощи
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015
Помог: 0 раз(а)
пропустил, спасибо.
Но если есть возможность нужно более универсальное:
чтобы подходило под любые условия (извините что выразился в пред. посте не точно) т.е. по сути один regex должен вытаскивать 3 числа активной функцией из любой из этих последовательностей и если указано 2 числа выбирать большее т.е. второе:
111.33 x 15,72 x 1633 см
111,33 x 15.72 x 16,33 см
11133 x 1572 x 16.33 см
111.33 х 15,72 х 1572 ~ 1630 см
111.33-134 x 15,72-16 x 1572 ~ 1630 см
Предполагаю, что делается через (?: ), но описать условия выбора под требования не получается, мне куда проще работать с if/then/else :>
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Помог: 30 раз(а)
lortine
Регулярным тут сложно. Я думаю проще разбить строку на массив по знаку "х" и в цикле проверять, если есть "-" или "~", вычленить второе и перезаписать.
lortine
Отправлено: 27 Августа, 2015 - 19:11:03
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015
Помог: 0 раз(а)
Цитата:
lortine
Регулярным тут сложно. Я думаю проще разбить строку на массив по знаку "х" и в цикле проверять, если есть "-" или "~", вычленить второе и перезаписать.
Понимаю, но задание сделать именно в regex :< Первые 3 и отдельно 4 и 5 описать легко, а вот универсальный вариант мне не дается. (Добавление) andrewkard
Можно вот этот разбив на массив в виде кода? разбивку ведь так же можно провести регуляркой
Покинул форум
Сообщений всего: 9
Дата рег-ции: Авг. 2015
Помог: 0 раз(а)
andrewkard
Спасибо огромное, не представляю как реализовать это с помощью (?: ) (как подсказывали)
Примерно такое описание и "творили", но тут до меня дошло, что при заполнении [cx] забыл переключить раскладку.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.