Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Тексты > Проверка номера счёта платёжки |
Автор: bscint13 23.2.2014, 19:03 |
Есть номер счёта ЭПС (электронно-платёжная система), на примере OKPAY... имеет вид OK456789656 Помогите, пожалуйста, составить правило для проверки (валидации) номера счёта, сам увы, пока не смог разобраться, дремучий лес... Должно быть две большие буквы и именно OK и 9 цифр, не меньше и не более... Возможно ли составить такое правило в одну строку... начиная с preg_match и что обозначает восклицательный знак перед preg_match ? пример - !preg_match Заранее благодарен всем, кто поможет. |
Автор: bscint13 24.2.2014, 19:13 |
Молчаливое безразличие говорит о том, что никто не знает или не хочет??? ![]() С восклицательным знаком разобрался, помощь не требуется, а вот с правилом всё же пока нужна... |
Автор: AVA12 24.2.2014, 20:49 |
Молчаливое безразличие переводится как "RTFM, нуб". Задача тривиальна, никаких алгоритмических изысков и глубокого знания языка не требуется, достаточно просто прочитать описание синтаксиса регвыров. И даже если никогда не слышал про регвыры, задача все равно легко решается. |
Автор: bscint13 24.2.2014, 22:00 | ||
В таком случае возникает вопрос, зачем данный форум создан вообще... и, если задача такая уж тривиальная, как Вы написали, в принципе подобное мог и написать только нуб, почему бы просто не помочь или это отнимает много усилий??? ![]() P.S. Ничего личного... просто ответ на Ваш пост и всего лишь... есть такое определение в психологии... как ответная реакция... И как думаете, если человек вообще не знаком с PHP, просто пытается как-нибудь разбираться, есть такой метод - метод тыка, но порой не всё понятно... а любому Шустрому или опытному ![]() |
Автор: AVA12 24.2.2014, 22:50 | ||||
Затем, чтобы помогать в случаях нетривиальных. А не для того, чтобы вести лентяев за ручку - "нажми на красную кнопку, поверни черный переключатель, а если включится аварийная сирена - отойди в сторону и сделай вид, что оно само".
Учить азбуке человека, который не хочет учиться - значит умножать энтропию и плодить халтурщиков, которых и так уж слишком много, особенно в вебе. |
Автор: bscint13 25.2.2014, 01:14 | ||||||
Знаете Уважаемый, на -учить- нет просто времени, один человек не может знать и уметь всё, да это и не нужно... у каждого свои задачи и скажем так - своя миссия... Я не собираюсь изучать PHP и становится программистом, возможно и разве что в следующей жизни, а всё чем интересуюсь на данном форуме - делаю для себя, точнее для своего проекта... В разделе Общие вопросы, я уже писал, почему обращаюсь за помощью, в наше время очень тяжело найти надёжных и верных партнёров, после сотрудничества с несколькими программистами - сделал вывод что надёжнее всё же самому... И то, что я прошу помочь вовсе не значит, что не копался и не пытался разбираться, на всё нужно время, а его нет и уж конкуренцию Вам либо кому другому не собираюсь составлять... Итак, всё же о старом... ГЛАВНОМ... Вот данное правило, к сожалению его не проверял в работе... preg_match('/OK{1}\d{9}/i',$okpay) Оно будет соответсвовать данному номеру счёта, типа OK657456345??? Или нет? Да, понимаю, проще будет сказать, что нет... однако сейчас хотелось бы получить конструктивную помощь специалиста, а не пустозвона!!! ![]() |
Автор: bscint13 25.2.2014, 04:40 |
preg_match('/OK{1}\d{9}/i',$okpay) Проверил данное выражение в онлайн сервисе тестирования, даже не в одном... работает!!! ![]() Однако есть одно но... проходит как OK657456345 так и ok657456345, т.е. с маленькими буквами. А как сделать, чтобы всё же были только большие буквы OK, чтобы маленькие не проходили... и возможно ли так сделать в одной строке? Заранее благодарен Всем неравнодушным за помощь и совет!!! ![]() ![]() ![]() |
Автор: capitan 25.2.2014, 14:13 | ||||
Видимо не все прочитали. Советую прочитать про модификаторы. http://ru2.php.net/manual/ru/reference.pcre.pattern.modifiers.php Почитайте, что обозначает модификатор "i", который вы зачем то же поставили. ![]() P.S. Тема про регулярные выражения изучается ТОЛЬКО личным опытом. Сразу решение - это зло! Я бы сделал проверку так:
Странно. А что говорил сервис, если увеличить кол-во цифр? По идее, он просто вырезал нужно кол-во, а "лишнее" оставлял. Не выдавая ошибки. Т.к. в вашем выражении отсутствуют символы начала и конца строки. |
Автор: AVA12 25.2.2014, 18:56 | ||
Людей, делающих операции на сердце, не будучи хирургами и не собираясь ими становиться, обычно сажают в тюрьму. Временами мне становится искренне жаль, что на "программистов" эта мера наказания не распространяется. |
Автор: bscint13 25.2.2014, 21:10 | ||||||||||
Слушайте AVA12!!! Купите очки или внимательно читайте... ![]() Себе я могу делать что угодно и как угодно, ни у кого не спрашивая на это разрешения... Вы наверное больше любитель языком работать, как вижу, так вот возьмите и засуньте его туда, где не светит СОЛНЦЕ... Понятно!!! ![]() Можете что-то добавить конструктивно, милости прошу, нет... НЕ ОТВЛЕКАЙТЕ!!! Добавлено @ 21:23
Вероятно модификатор "i" я поставил потому, что вместо preg_match была функция eregi, насколько правильно понимаю и помню, однако сейчас не могу утверждать, прошло достаточно долгое время... Я Вам очень благодарен и признателен за помощь и предоставление правила, соответствующего запросу данного поста... БЛАГОДАРЮ! Оно действительно работает... а касательно моего примера и Вашего вопроса, если добавить более 9 цифр - все цифры, что после 9 идут справа просто обрезает, да и по сути больше никак нельзя будет ввести в поле формы номера счёта... да, я конечно, забываю о том, что есть те, у кого чешутся руки и языки... как-нибудь со временем преодолеем и ЭТО!!! А вот что это за символ или переменная, приношу извинения за вопрос, конечно... $q - это что??? Заранее признателен за ответ. Вы совершенно правы, делать без изучения и сразу - плохо, я согласен, однако это вынужденная мера и делаю для себя, а не для дяди, Пети и так далее... у каждого свой Путь... Да и программистов сейчас не так много, вот таких как AVA12, кто больше языком - много, а на деле... ????? А Вам - всё же огромное спасибо! Да прибудет с Вами Сила! Удачи и успехов во всём! |
Автор: AVA12 25.2.2014, 21:34 |
О, какая экспрессия! Говоришь, себе делаешь? Взаимодействие с платежными системами? Ну-ну. |
Автор: bscint13 25.2.2014, 22:12 | ||
Чего ты хочешь или добиваешься? О себе... это был ответ на твой вопрос по хирургам... а вообще-то делаю свой проект для людей... Такой ответ устраивает!!! ![]() Будут время и возможности я обязательно займусь тщательным изучением языка, мне он нравится... время покажет... Кстати, был бы признателен за рекомендацию практичного и доступно написанного руководства, самоучителя по PHP и регулярным выражениям для начинающих, собственно для НУБов... я даже и пытаться не буду опровергать, что я НУБ, мне от этого ни холодно, ни горячо... Я пересмотрел не мало подобных руководств, слишком заумно написаны, много воды... |
Автор: capitan 25.2.2014, 23:42 | ||
Почитайте первоисточник http://php.net/manual/ru/function.preg-match.php Это не обязательный параметр. Массив, где будут все результаты поиска. |
Автор: bscint13 27.2.2014, 14:32 | ||||
Благодарю Вас за рекомендации и оказанную помощь в решении интересующего вопроса!!! ![]() ![]() ![]() |