Спустя 16 часов, 41 минута, 17 секунд (26.10.2008 - 06:56) Sylex написал(а):
Цитата(panacea @ 25.10.2008, 16:15) [snapback]52764[/snapback]
Подскажите плиз с помошью какой функции удалить из строки любые символы кроме математических таких как (цифры, +, -, .)
с помощью функций для работы с регулярными выражениями
Спустя 9 часов, 35 минут, 34 секунды (26.10.2008 - 16:32) panacea написал(а):
Спасибо. А что это?
Я хочу сделать фильтр в обработчике форм "text" ("number" не нравится). Что б там не писали, а обрабатывалось исключительно только число.
Пример: Если ввести '54 4f a_ads-d+34"
то после функции фильтрации должно остаться 54434
Можно пока ограничиться только целыми числами. Если можно то конкретнее отвечать. А то я в языке новичок.
Я хочу сделать фильтр в обработчике форм "text" ("number" не нравится). Что б там не писали, а обрабатывалось исключительно только число.
Пример: Если ввести '54 4f a_ads-d+34"
то после функции фильтрации должно остаться 54434
Можно пока ограничиться только целыми числами. Если можно то конкретнее отвечать. А то я в языке новичок.
Спустя 2 часа, 16 минут, 52 секунды (26.10.2008 - 18:49) Sephiroth_Lukaw написал(а):
Цитата("panacea")
Если можно то конкретнее отвечать. А то я в языке новичок.
http://ru2.php.net/preg_replace ![spoiler]print preg_replace("|([^1-9])|", "", "strinf324asc");[/spoiler]
Спустя 3 дня, 51 минута, 9 секунд (29.10.2008 - 19:40) panacea написал(а):
Ага, то есть вот так:
preg_replace("[\D]+","", $string);
То есть заменяем все литералы кроме цифр на пустую строку? Проверьте, плиз.
preg_replace("[\D]+","", $string);
То есть заменяем все литералы кроме цифр на пустую строку? Проверьте, плиз.
Спустя 8 часов, 2 минуты, 58 секунд (30.10.2008 - 03:43) kirik написал(а):
Цитата
Проверьте, плиз.
угу, так.. но тебе ведь нужно еще и знаки +, - ?
тогда так -
Код
$str = 's9kl-mras-+lsd/*msdp83';
echo preg_replace('/[^\d\+\-]+/', null, $str);
echo preg_replace('/[^\d\+\-]+/', null, $str);
Спустя 8 часов, 13 минут, 44 секунды (30.10.2008 - 11:57) netruxa написал(а):
kirik, помоги мне плз. я тоже в регулярных выражениях пока не особо разбираюсь
надо убрать все, кроме русских букв а-яА-я
надо убрать все, кроме русских букв а-яА-я
Спустя 10 минут, 14 секунд (30.10.2008 - 12:07) Sephiroth_Lukaw написал(а):
Код
print preg_replace("|[^а-я]|i", NULL, "fffаааяяявс12АЯ");
Спустя 23 минуты, 9 секунд (30.10.2008 - 12:30) netruxa написал(а):
отлично! спасибо!
только в моем случае еще нужны большие буквы и пробел
поэтому так:
только в моем случае еще нужны большие буквы и пробел
поэтому так:
Код
$contents = preg_replace("|[^а-яА-Я ]|i", NULL, $contents);
Спустя 20 минут, 30 секунд (30.10.2008 - 12:51) Sephiroth_Lukaw написал(а):
i - игнорирование регистра
\s - любой пробельные символ
\s - любой пробельные символ
Спустя 1 час, 1 минута, 19 секунд (30.10.2008 - 13:52) panacea написал(а):
Нет просто хочу чтоб в строке были только целые числа, а они могут быть и отрицательными.
Данная функция preg_replace('/[^\d\+\-]+/', null, $str);
не отфильтрует такое '-12-15---2'. А надо чтоб от этого осталось '-12152'
Тогда регулярное выражение в этой функции должно выглядеть как-то так, наверное
'/([^\-][\D]+)/'
Спасибо за поддержку.
Данная функция preg_replace('/[^\d\+\-]+/', null, $str);
не отфильтрует такое '-12-15---2'. А надо чтоб от этого осталось '-12152'
Тогда регулярное выражение в этой функции должно выглядеть как-то так, наверное

'/([^\-][\D]+)/'
Спасибо за поддержку.
Спустя 29 минут, 31 секунда (30.10.2008 - 14:21) netruxa написал(а):
Sephiroth_Lukaw, не... при print preg_replace("|[^а-я]|i", NULL, $text); у меня почемуто удалились все заглавные буквы (хз почему) поэтому и дописал А-Я
Спустя 6 часов, 47 минут, 51 секунда (30.10.2008 - 21:09) kirik написал(а):
Цитата(netruxa)
при print preg_replace("|[^а-я]|i", NULL, $text); у меня почемуто удалились все заглавные буквы (хз почему) поэтому и дописал А-Я
-
Цитата(Sephiroth_Lukaw)
i - игнорирование регистра
\s - любой пробельные символ
\s - любой пробельные символ
Спустя 2 часа, 18 минут, 38 секунд (30.10.2008 - 23:28) panacea написал(а):
Ну вот моя функция готова.
function filtr ($str) {
$str = stripslashes($str);
$str = trim(strip_tags ($str));
$str = preg_replace('/[^\d\-][\D]*/', NULL, $str);
return $str;
}
foreach($fk as $k => $v) {
$fk[$k]=filtr($v);
}
Вроде работает как надо.
Хотя думаю строки
$str = stripslashes($str);
$str = trim(strip_tags ($str));
лишние, но думаю оставить. Лишь бы везде работало.
function filtr ($str) {
$str = stripslashes($str);
$str = trim(strip_tags ($str));
$str = preg_replace('/[^\d\-][\D]*/', NULL, $str);
return $str;
}
foreach($fk as $k => $v) {
$fk[$k]=filtr($v);
}
Вроде работает как надо.
Хотя думаю строки
$str = stripslashes($str);
$str = trim(strip_tags ($str));
лишние, но думаю оставить. Лишь бы везде работало.

Спустя 1 год, 8 месяцев, 7 дней, 23 часа, 52 минуты, 4 секунды (8.07.2010 - 22:20) alexandrbt написал(а):
Скажите пожалуйста как прописать, если нужно что бы игнорировался только символ " | "
Заранее большое спасибо.
Заранее большое спасибо.
Спустя 11 часов, 29 секунд (9.07.2010 - 09:20) DedMorozzz написал(а):
что значит "игнорировался"? Что бы бралось всё кроме него? Иль наоборот, что бы только его искало? Но так иль иначе скорее всего хочешь услышать вот это:
"\|", естесно без кавычек. Т.е. проекранировать.
"\|", естесно без кавычек. Т.е. проекранировать.