[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как правильно дописать регулярное выражение
quickxyan
возвращаемся к нашим баранам


$preg = preg_match_all("/([0-9]){11}/",$data,$matches);


работает отлично, но есть одно НО. если в строке есть число которое имеет больше чем 11 цифр например 1234567890123456, то от него отрезаеться 11 первых символов, то есть 12345678901.

ВОПРОС: как сделать, что бы если число имеет больше чем 11 знаком просто пропускалось???



Спустя 3 минуты, 39 секунд (26.12.2010 - 23:56) ZSH написал(а):
$preg = preg_match_all("/([0-9])/",$data,$matches); 

Спустя 5 минут, 51 секунда (27.12.2010 - 00:02) ZSH написал(а):
упс при копировании про пустил :)

$preg = preg_match_all("/([0-9]){1,}/",$data,$matches); 


от 1 и до ................ если надо не меньше 11 то вместо 1 поставь 11

Спустя 43 секунды (27.12.2010 - 00:03) quickxyan написал(а):
спасибо

Спустя 7 минут, 5 секунд (27.12.2010 - 00:10) quickxyan написал(а):
мм, почему то не работает

Спустя 11 часов, 49 минут, 55 секунд (27.12.2010 - 12:00) PiratXXX написал(а):
quickxyan

попробуй так:
(это я подправляю предыдущие варианты)

$preg = preg_match("/^\d+$/",$data);


примечание:

\d любая десятичная цифра

"+" эквивалентен {1,}

Опиши по подробне что именно тебе надо.
Если я тебя правильно понял, то у тебя к примеру 10 чисел, и нужно те которые неправильные(больше 11 символов) отсеять, а те которые правильные занисти в массив.
тогда так:


$datas = array("123456785323456", "1234567897654323456", "12345876933456", "1234567890123456");
foreach($datas as $v) {
if(preg_match("/^\d{1,11}$/",$v)) {
$data[] = $v;
}
}

// вот и все массив $data массив со значениями которые соответствуют условию (т.е. кол-во символов больше 1 и меньше 11)

Спустя 9 часов, 22 минуты, 8 секунд (27.12.2010 - 21:22) quickxyan написал(а):
мне нужно определенное количество цифр - в данном случае 11. знак доллара не работает:(

Спустя 41 минута, 51 секунда (27.12.2010 - 22:04) Dron19 написал(а):
можно еще так

$preg = preg_match_all("/([0-9]){1,}/",$data,$matches);

Спустя 2 минуты, 5 секунд (27.12.2010 - 22:06) quickxyan написал(а):
в чем различие? я говорю, что это не работает:


$preg = preg_match_all("/".$pre."([0-9]){11,11}/",$data,$matches);

Спустя 29 минут, 22 секунды (27.12.2010 - 22:35) Dron19 написал(а):
Различие в том, что моей регулярке неограниченно символов цифр слудующих друг за другом будут вытащены, а в вашей только 11

Спустя 10 минут, 39 секунд (27.12.2010 - 22:46) quickxyan написал(а):
ппц, читайте пожалуста первый пост - там вкратце описано, задание.

мне и нужно только 11, но оно почему то не работает и я хз почему

Спустя 29 минут, 25 секунд (27.12.2010 - 23:15) DedMorozzz написал(а):
Модификатор "b"
или
#(?!<[0-9])[0-9]{11}(?!>[0-9])#
последний вариант надо проверить, и вероятно чуток подправить.

Спустя 2 часа, 19 минут, 22 секунды (28.12.2010 - 01:35) Gokusa написал(а):
а если поиграться с привязками к началу-концу строки.
что в переменной помимо цифр?
или это не важно?(я типа нуб)

Спустя 5 минут, 55 секунд (28.12.2010 - 01:40) Gokusa написал(а):
как-то так "`[^0-9]+[0-9]{4}[^0-9]+`";
срабатывает через раз,не знаю почему


_____________
печатаю со скоростью 320 минут в знак...

плюсуем карму не стесняемся
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.