[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Фильтрация символов
hammer_tm
Добрый день!
Подскажите, пожалуйста, как в данном выражении можно запретить всё кроме цифр, точек и запятых.

$refconvert = (trim(preg_replace('[color=red]????'[/color],'',$refconvert)));


Нужно что бы проходили только следующие типы данных:

Пример:
21454452
0.0457
15,41


а например 15,4,110 считалось бы ошибкой т.к. тут 2 запятые

и все остальное буквы, символы и т.п. вырезались бы
Hello
\d+[\.,]?\d*

_____________
VPS от 5$, первые 2 месяца - бесплатно.
Игорь_Vasinsky
laugh.gif

это очень сложный алгоритм должен быть)
в несколько этапов.
либо паттерн супер-пупер.

а чё ты замарачиваешься?
ругаю юзера за это поле и всё. Пускай перепечатывает.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
Hello
проверь на строке

Цитата
ad32sds,1,212/.124dfaaa,


должно быть на выходе 32,1212124
если я правильно понял

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
если не заморачиваться на сотых долях то

  $str = 'ad32sds,1,212/.124dfaaa,';

$str = preg_replace("#[^\d|,|\.]#ius", '', $str);

$str = strtr($str, array(','=>'.'));

$str = explode('.',$str);

$str = $str[0].'.'.strtr($str[1],array('.'=>''));

echo $str;


т.е. из строки

ad32sds,1,212/.124

вернутся

ad32sds,1,212/.124

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
hammer_tm
Решил воспользоваться этим вариантом:

$refconvert = (trim(preg_replace('/[^0-9,.]/','',$refconvert),','));
$refconvert = (trim(preg_replace('/[^0-9,.]/','',$refconvert),'.'));


if (ereg ('([0-9]{1,6})(.{1})([0-9]{1,6})', $refconvert)) {
echo $refconvert;
} else {
echo "Invalid format: ".$refconvert;
}


Но если ввести 4..4 то все ок, пишет что не верный формат, но если ввести 4.4..4
то эти данные проходят фильт. Вопрос - почему? Ведь .{1} установлен?

Игорь_Vasinsky
тебя не поймёшь !

то тебе нужно вырезать всё лишнее, то ты хочешь проверит и в случае не коректных данных вывести ошибку.

что тебе надо?

точки в паттернах экранируются - это мета символ - обозначающий любой символ.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

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