Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как из строки вырезать число


Автор: kulikoff 11.10.2009, 08:15
Доброго времени суток!
Возникла такая проблема. В базе данных есть строковое поле, в котором хранится информация в виде 
Код

какой-то текст ЧИСЛО какой-то текст

Известно, что число встречается один раз, больше никаких цифр в тексте нет. Надо выделить это число из строки. Т.е., очистить содержимое строки от букв и пробелов, оставить одно число. Так понимаю, что это надо использовать регулярные выражения, но я в них не силен... Помогите, плиз!

Автор: Ипатьев 11.10.2009, 09:38
Я думаю, будет лучше описать реальную задачу.  что за база, что за данные, что за число. В каком запросе понадобилось его вырезать.

Автор: SoWa 11.10.2009, 09:42
Код

<?php
$var = '122.34343The';
$float_value_of_var = floatval($var);
echo $float_value_of_var; // 122.34343
?>

http://ru2.php.net/manual/en/function.floatval.php

Автор: kulikoff 11.10.2009, 09:52
Значится, описываю реальную задачу, т.к., может, я совсем не туда думаю...

Есть у нас таблица, в которой есть стоимость. Поле стоимости текстовое и содержит информацию вида "от 1635 евро/чел", "от 13 дол" и т.д. Стоит задача сделать упорядочивание по цене, т.е., чтоб сначала выводились более дешевые туры в сторону возрастания цены. С валютой проблем нет, т.к. сначала будут выводиться те, у которых в цене указан дол, потом евро. А вот с абсолютным значением цены никак не могу справится, потому решил просто вырезать число, записать в отдельное поле базы и по нему уже упорядочивать. Понимаю, что немного гланды через попу удалять, но база досталась такая, какая есть, и надо искать выходы из существующей уже...

Автор: bars80080 11.10.2009, 11:56
а нельзя эту задачу решить правильно организуя БД и упорядочивая по полям?

Автор: kulikoff 11.10.2009, 18:11
просто база уже такая есть... Мне надо исходить из имеющегося... Или переформатировать надо, но всё равно надо решить эту проблему

Автор: kulikoff 14.10.2009, 21:23
Всё, решил задачу. Спасибо большое SoWa!!!

Автор: Nicklasos 14.10.2009, 22:05
Такую задачу лучше делать через регулярные выражения.

Код

<?php
    $var = 'erer122.34343The';
    $float_value_of_var = floatval($var);
    echo $float_value_of_var;
?>


Такой вариант выводит "0"

Автор: brother79 30.10.2009, 07:10
Решение не указанно в форуме, вот нашёл ссылку:

http://www.mysql.ru/docs/man/Regexp.html

Я полагаю решение было такое.

Автор: nerezus 30.10.2009, 11:01
Цитата

Такой вариант выводит "0"
 Ну да, ноль. Экспоненциальная запись же ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)