За последние 24 часа нас посетили 17324 программиста и 1650 роботов. Сейчас ищут 968 программистов ...

Получить число из текста

Тема в разделе "PHP для новичков", создана пользователем Yankovitz, 22 май 2017.

  1. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Добрый день. Как реализовать подобное?
    Есть некий отсчет, результат которого неизвестен заранее. Присваиваю значение к переменной $time. Содержание переменной может быть:
    1 минута, 2 минуты, 5 минут, 41 минута, 1 час, 2 часа, 5 часов, 21 час, 1 день, 2 дня, 6 дней, 31 день
    Нужно создать условие, если переменная $time менее 7 дней.
    Код (Text):
    1. if ( $time < 7 ) {
    2.     // некий код
    3. }
    Подайте пожалуйста идею, как это реализовать. Думал использовать str_replace. Но может есть более красивое решение?
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    распиши словами, как нужно решать твою задачу.
     
  3. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Если с даты публикации до сегодняшнего момента прошло менее 7 дней, то срабатывает некий код. Средствами CMS время с даты публикации выводится только вида:
    Код (Text):
    1. 1 минута/ 2 минуты/ 5 минут/ 41 минута/ 1 час/ 2 часа/ 5 часов/ 21 час/ 1 день/ 2 дня/ 6 дней или 31 день
    А нужно просто цифру. Причем только дни.
    Если выводится 19 часов, то выводится 0. Если, например, 3 дня. То выводить просто 3
    --- Добавлено ---
    Или лучше по-другому? Могу средствами CMS получить даты текущую и поста вида 22.05.2017 или 19-05-2017. Как сравнить даты? Чтобы если разница составляла менее 7 дней, то срабатывал код.
    Думаю, так будет лучше.
     
  4. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    https://php.ru/manual/datetime.diff.html
     
  5. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    В общем, получилось так:
    Код (Text):
    1. function new_product($data1, $data2) {
    2.    
    3.     echo '<div class="new-product">';
    4.    
    5.     $post_time = get_option('newproduct') * 86400;       // продолжительность в секундах когда товар считаем новым
    6.     $data1 = current_time('mysql');                                     // получаем текущее время сайта
    7.     $data2 = get_post_time('d-m-Y H:s', true);                   // получаем время поста
    8.    
    9.     $data_new_1 = strtotime($data1);                                // преобразовываем формат даты в секундах
    10.     $data_new_2 = strtotime($data2);                                // преобразовываем формат даты в секундах
    11.     $data_new_3 = $data_new_1 - $data_new_2;             // считаем разницу текущей даты и даты публикации записи
    12.    
    13.     if( $post_time > $data_new_3 ){
    14.         echo 'New';
    15.     }
    16.    
    17.     echo '</div>';
    18. }
    Вроде работает. Скажите, с точки зрения программиста, чушь собачья?
     
  6. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Это не может работать
     
  7. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Почему?
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    5 строка ..... бред. Пишешь код, хоть понимаешь что пишешь и что должно в результате приходить?
     
  9. Yankovitz

    Yankovitz Активный пользователь

    С нами с:
    21 ноя 2014
    Сообщения:
    194
    Симпатии:
    6
    Почему бред? Получаю данные из настройки, которую сам создал. Там указываю целое число дней. И получаю количество секунд в указанном временном промежутке.
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    во первых ты там ничего не получаешь, функция не определена.
    во вторых ты получишь не int результат, а строку с html версткой
    3 - включи отображение всех ошибок. Как включить ? error_reporting ( E_ALL ) + настройка сервера