[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с написание строгой проверки!
shleify
Помогите с написание строгой проверки.
Необходимо проверять поле формы(либо сразу на JS либо потом методом PHP) перед внесением строгий ввод цифр с данным образцом:
5,3,4,2,3,5,1,3,2
Цифры все будут однозначные, то-есть проверить на:
1. Наличие и удаление пробелов.
2. Не должно быть двухзначных цифр, а если таковые имеются то вставлять между ними запятую.
3. Проверка на наличие символов отличных от разрешенных

В принципе соображаю как это сделать но хочется услышать грамотные варианты.



Спустя 2 минуты, 47 секунд (27.10.2010 - 11:47) DedMorozzz написал(а):
shleify, вот предложи решение, а далее посоветуют что не так или же скажут, что всё верно.
Сейчас выглядит это как "Сделайте мне следующим образом:....."

Спустя 5 минут, 11 секунд (27.10.2010 - 11:52) Basili4 написал(а):
shleify

$num=(int)$_GET('number');

Все дела $num будет содержать только цифери все букафки рассматриваются как 0

if ($num>10) // а дальше сам. Как взрослый

Спустя 59 минут, 19 секунд (27.10.2010 - 12:51) shleify написал(а):
Цитата (DedMorozzz @ 27.10.2010 - 08:47)
shleify, вот предложи решение, а далее посоветуют что не так или же скажут, что всё верно.
Сейчас выглядит это как "Сделайте мне следующим образом:....."

//Сначала убрать все пробелы
$vhod = str_replace(" ","",$vhod);
//Потом как-то вытащить все цифры однозначный в массив
$array = ??????
//Потом сложить нужную переменную из массива
$i=0;
$all = count($array);
$string = "";
foreach($array as $num){
$i++;
if($i!=$all){$string.=$num.",";}else{$string.=$num;}
}


Вот как как то так!
Вот как вытащить в массив все цифры. Функция (int) вытаскивает только первую!

Спустя 11 минут, 21 секунда (27.10.2010 - 13:02) inpost написал(а):
Basili4
10 - тоже двухзначное, тут как минимум >= надо.
/^([1-5]{1}[\,]?)*[1-5]{1}$/ - на JS, хм, или что-то в этом роде... если, конечно, не допустил ошибки, так как первый раз их пишу =)

Спустя 53 секунды (27.10.2010 - 13:03) DedMorozzz написал(а):
<?php

$a = '5,3,4,2,3,52,1,3,2';
if(preg_match('#[0-9, ]+#',$a)){
$a = str_replace(' ','',$a);
$a = preg_replace('#([0-9])([0-9])#','$1,$2',$a);
}
else{
echo "здесь не только цифры";
}

echo $a;

Спустя 13 минут, 5 секунд (27.10.2010 - 13:16) shleify написал(а):
Цитата (DedMorozzz @ 27.10.2010 - 10:03)
<?php

$a = '5,3,4,2,3,52,1,3,2';
if(preg_match('#[0-9, ]+#',$a)){
    $a = str_replace(' ','',$a);
    $a = preg_replace('#([0-9])([0-9])#',',',$a);
}
else{
    echo "здесь не только цифры";
}

echo $a;

Это гуд! СПС! А как быть если встречается вот так:
$a="3,4,,6,8,4,2,34,6,8";
Я имею ввиду что попадается две запятых подряд

Спустя 7 минут, 12 секунд (27.10.2010 - 13:24) netruxa написал(а):
$a = str_replace(',,',',',$a);

? smile.gif

Спустя 17 минут, 52 секунды (27.10.2010 - 13:41) shleify написал(а):
Все! Все проще! И эффективней и безопасней!
Сначала прогнать переменную на проверку скриптов и тд а потом!
$a="3,4,,6,8,4,2,34,6,8";
print $a."<br>";
$d = str_split($a);
$vivod = "";
foreach($d as $b){
if(is_numeric($b)){
$vivod.=$b.",";
}
}

$vivod = substr($vivod, 0, strlen($vivod)-1);
print $vivod;

Результат:
Было: 3,4,,6,8,4,2,34,6,8
Стало: 3,4,6,8,4,2,3,4,6,8

Всем спасибо!
Быстрый ответ:

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