Необходимо проверять поле формы(либо сразу на 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) // а дальше сам. Как взрослый
$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, хм, или что-то в этом роде... если, конечно, не допустил ошибки, так как первый раз их пишу =)
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="3,4,,6,8,4,2,34,6,8";
Я имею ввиду что попадается две запятых подряд
Спустя 7 минут, 12 секунд (27.10.2010 - 13:24) netruxa написал(а):
$a = str_replace(',,',',',$a);
?

Спустя 17 минут, 52 секунды (27.10.2010 - 13:41) shleify написал(а):
Все! Все проще! И эффективней и безопасней!
Сначала прогнать переменную на проверку скриптов и тд а потом!
Результат:
Было: 3,4,,6,8,4,2,34,6,8
Стало: 3,4,6,8,4,2,3,4,6,8
Всем спасибо!
Сначала прогнать переменную на проверку скриптов и тд а потом!
$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
Всем спасибо!