$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 написал(а):
упс при копировании про пустил :)
от 1 и до ................ если надо не меньше 11 то вместо 1 поставь 11
$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
попробуй так:
(это я подправляю предыдущие варианты)
примечание:
\d любая десятичная цифра
"+" эквивалентен {1,}
Опиши по подробне что именно тебе надо.
Если я тебя правильно понял, то у тебя к примеру 10 чисел, и нужно те которые неправильные(больше 11 символов) отсеять, а те которые правильные занисти в массив.
тогда так:
попробуй так:
(это я подправляю предыдущие варианты)
$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, но оно почему то не работает и я хз почему
мне и нужно только 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 минут в знак...
плюсуем карму не стесняемся