Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 30
1

Обрезание лишних символов

23.03.2017, 19:14. Показов 2160. Ответов 10

Author24 — интернет-сервис помощи студентам
Всем привет!
На сайте есть форма, в которой имеется поле "цена".
В базе MySql этому полю соответствует тип данных INT.

Если ввести в поле не целое число то выскакивает ошибка.

Чтобы удалять все символы, кроме цифр, есть такая функция:
PHP
1
2
3
4
5
6
function only_num($str)
{
  $str = trim($str);
  $str = preg_replace ("(\D)","", $str);
  return $str;
}
Если в поле ввести "1231р." в базу запишется только "1231"

Но есть проблемы:
1) если ввести в поле только буквы - опять ошибка
2) если ввести в поле "1231,30" то запишет как "123130" (удалив только символ запятую), а нужно чтобы записал как "1231"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2017, 19:14
Ответы с готовыми решениями:

Обрезание строки без лишних символов
И снова вынужден обратиться за помощью. Есть такая задача, обрезать строку до определённой длины....

Обрезание предложения по заданому количеству символов
Привет всем) У меня такой вопрос, не могу решить никак Есть входная строка, например "bla bla...

Обрезание нулевых символов у строки
Интересуюсь, как быстрее и проще отбросить нулевые символы в конце строки, полученной из массива...

Удаление лишних символов
http://s018.***********/i522/1202/8e/ef7716ad3e8f.png вот, каждая строчка - это отдельный лэйбл....

10
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
23.03.2017, 19:38 2
oieg,
PHP
1
2
3
function only_num($str) {
    return floor($str + 0);
}
Добавлено через 2 минуты
А вообще не стоит допускать такие вольности пользователю, как ввод некорректного значения. Этот код при значении "abs123.78ads" вернёт 0, а не ожидаемые 123.
0
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 30
23.03.2017, 19:43  [ТС] 3
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Код, который дал я при значении "abs123.78ads" вернёт 0, а не ожидаемые 123.
А нужно именно 123 ))) В этом и проблема.
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
23.03.2017, 19:52 4
Цитата Сообщение от oieg Посмотреть сообщение
1) если ввести в поле только буквы - опять ошибка
а что нужно сделать если буквы?
PHP
1
2
3
   $c = 'abs123.78ads';
    preg_match("~\\d+(?=\.|\,)?~",$c,$m);
echo $m[0];
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
23.03.2017, 19:53 5
Лучший ответ Сообщение было отмечено oieg как решение

Решение

oieg,
PHP
1
2
3
function only_int($str) {
    return preg_match('`\d+`', $str, $m) ? $m[0] : 0;
}
1
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 30
23.03.2017, 19:54  [ТС] 6
Цитата Сообщение от Azdeman Посмотреть сообщение
а что нужно сделать если буквы?
то 0 записывает
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
23.03.2017, 19:59 7
Лучший ответ Сообщение было отмечено oieg как решение

Решение

Цитата Сообщение от oieg Посмотреть сообщение
то 0 записывает
PHP
1
2
3
 $c = 'abs178.8ads';
    preg_match("~\\d+(?=\.|\,)?~",$c,$m);
echo $m[0] ? $m[0] : 0;
1
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 30
23.03.2017, 21:06  [ТС] 8
Azdeman, используя ваш код, то и при вводе цифр у меня 0 выводит.
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
23.03.2017, 21:13 9
Цитата Сообщение от oieg Посмотреть сообщение
Azdeman, используя ваш код, то и при вводе цифр у меня 0 выводит.
скиньте пример

PHP
1
2
3
4
5
$c = ['12.43','43,55','fewf34wegerg','qsqdfer4565.45','sqdw4.4df','^%$#$12.4%%^%'];
array_walk($c,function($v){
    preg_match("~\\d+(?=\.|\,)?~",$v,$m);
        echo $m[0] ? $m[0].'<br/>' : 0 .'<br/>'; 
});
12
43
34
4565
4
12
0
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 30
23.03.2017, 21:38  [ТС] 10
Azdeman, хотя нет, ваш код работает, видимо где-то я накосячил
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
23.03.2017, 21:47 11
Цитата Сообщение от oieg Посмотреть сообщение
Azdeman, хотя нет, ваш код работает, видимо где-то я накосячил

Не по теме:

:D Сегодня мне явно не везет , все говорят что мои коды не работают

Определить что в слове только буквы (кириллица и латиница), без цифр,пробелов и дргуих символов

5 пост

0
23.03.2017, 21:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2017, 21:47
Помогаю со студенческими работами здесь

Удаление лишних символов
Помогите я новичок. Макрос должен удалять повторяющиеся запятые, а так же те что стоят до и после...

Удаление лишних символов
Помогите удалит лишние символы. У меня программа выгружает данные из базы и записывает в файл как...

Появление лишних символов
Здравствуйте уважаемые, подскажите как решить следующую проблему: появились непонятные символы,...

Удаление лишних символов
Имеется файл txt.txt в котором 50 000 строк, просто физически это обработать тяжело. Нужно удалить...

Удаление лишних символов в строке
Здравствуйте. Я учусь в 8 классе. Но в будущем хочу стать программистом. Я изучил основы...

Удаление из строки лишних символов
Имеется такая строка: const QString format = &quot;ABC-%0-%1%2-%3-%4%5-%6-%7-%8-%9-%10-%11&quot;; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru