Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > WordPress и другие CMS
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2020, 05:26   #1
sotex2
Пользователь
 
Регистрация: 21.09.2020
Сообщений: 21
По умолчанию Как убрать точку в конце у числового значения

Есть код ниже, через которое выводится числовые значения например 10.20.30, 111.222.333, эти значения выводятся нормально без точки на конце, а если значения числовые будут целыми, например 1,3,5,10,20,100, то в конце будет точка стоять. как можно избавиться от точки на конце в целых числах.

Код:
<?php $data = get_post_meta($post->ID, 'version', true) ;
         $result=explode('.' , $data);
         echo $result[0].'.'.$result[1];
?>
sotex2 вне форума Ответить с цитированием
Старый 28.09.2020, 18:07   #2
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Вместо
Код:
echo $result[0].'.'.$result[1];
сделайте
Код:
echo implode('.', array_slice($result, 0, 2) );  // Первые 2 элемента массива (или первый, если он один)
Если это скрипт для чисто "домашнего" применения - можно сделать "заплатку":
Код:
echo trim( $result[0].'.'.$result[1], '.');
но при "целых" - у вас $result[1] не определён и в логи должен сыпаться warning.
Безопасность с Content Security Policy

Последний раз редактировалось Ottava; 28.09.2020 в 18:14.
Ottava вне форума Ответить с цитированием
Старый 28.09.2020, 21:11   #3
sotex2
Пользователь
 
Регистрация: 21.09.2020
Сообщений: 21
По умолчанию

спасибо
Цитата:
Сообщение от Ottava Посмотреть сообщение
Вместо
Код:
echo $result[0].'.'.$result[1];
сделайте
Код:
echo implode('.', array_slice($result, 0, 2) );  // Первые 2 элемента массива (или первый, если он один)
Если это скрипт для чисто "домашнего" применения - можно сделать "заплатку":
Код:
echo trim( $result[0].'.'.$result[1], '.');
но при "целых" - у вас $result[1] не определён и в логи должен сыпаться warning.
спасибо
sotex2 вне форума Ответить с цитированием
Старый 28.09.2020, 21:20   #4
sotex2
Пользователь
 
Регистрация: 21.09.2020
Сообщений: 21
По умолчанию

А можно в этом коде ниже, поставить условие, если будут встречаться числа например такие: 2020111.222 или 2021.222.333, где стоит впереди год, то если будут впереди числа 2020 или 2021, то вывод был бы примерно такой: 111.222, 222.333

Код:
<?php $data = get_post_meta($post->ID, 'version', true) ;
         $result=explode('.' , $data);
              echo implode('.', array_slice($result, 0, 3) );  
?>
sotex2 вне форума Ответить с цитированием
Старый 29.09.2020, 12:20   #5
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Можно, но это всё "велосипед", который рано или поздно перестанет ездить.
Судя по всему вы вы пытаетесь форматировать строку даты, для этого есть всякие специальные функции date() / DateTime::createFromFormat.
Надо только знать, откуда вы берёте "числа например такие: 2020111.222 или 2021.222.333" - наверняка у вас где-то есть метка времени, которую легко преобразовать в дату нужного формата любого стандарта DD.MM, DD.MM.YYYY и тп.
Безопасность с Content Security Policy
Ottava вне форума Ответить с цитированием
Старый 29.09.2020, 13:50   #6
sotex2
Пользователь
 
Регистрация: 21.09.2020
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Ottava Посмотреть сообщение
Можно, но это всё "велосипед", который рано или поздно перестанет ездить.
Судя по всему вы вы пытаетесь форматировать строку даты, для этого есть всякие специальные функции date() / DateTime::createFromFormat.
Надо только знать, откуда вы берёте "числа например такие: 2020111.222 или 2021.222.333" - наверняка у вас где-то есть метка времени, которую легко преобразовать в дату нужного формата любого стандарта DD.MM, DD.MM.YYYY и тп.

это не время. у меня сайт с программами https://programnew.ru и у меня парсер с сайта донора, если версия новее, то парсит версии программ и ссылку на скачивания. и при парсинге могут попадаться впереди "числа например такие: 2020111.222 или 2021.222.333". и код выше нормально работает, но хотелось бы, если вдруг при парсинге будут попадаться такие цифровые значения, то обрезались бы такие цифры года и на выходе было бы так: 111.222 или 222.333
sotex2 вне форума Ответить с цитированием
Старый 01.10.2020, 09:32   #7
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Цитата:
Сообщение от sotex2 Посмотреть сообщение
2020111.222 или 2021.222.333"
Там что, там год то спереди, то сзади, то отделён точкой, то - нет? Тогда только тупо регуляркой:
Код:
$data = get_post_meta($post->ID, 'version', true);
$result = preg_replace('#^(2019|2020|2021|2022)\.?#', '', $data);
$result = preg_replace('#\.?(2019|2020|2021|2022)$#', '', $result);
echo $result;
Куда добавлять требуемые годы, надеюсь, понятно.
Безопасность с Content Security Policy
Ottava вне форума Ответить с цитированием
Старый 01.10.2020, 10:16   #8
sotex2
Пользователь
 
Регистрация: 21.09.2020
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Ottava Посмотреть сообщение
Там что, там год то спереди, то сзади, то отделён точкой, то - нет? Тогда только тупо регуляркой:
Код:
$data = get_post_meta($post->ID, 'version', true);
$result = preg_replace('#^(2019|2020|2021|2022)\.?#', '', $data);
$result = preg_replace('#\.?(2019|2020|2021|2022)$#', '', $result);
echo $result;
Куда добавлять требуемые годы, надеюсь, понятно.
Спасибо, но только из такого числа 20209.0.10390 остается только это 0.10390
sotex2 вне форума Ответить с цитированием
Старый 01.10.2020, 22:40   #9
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Цитата:
Сообщение от sotex2 Посмотреть сообщение
только из такого числа 20209.0.10390 остается только это 0.10390
Нет, остаётся 9.0.10390 на всех версиях PHP. Работает согласно вашего ТЗ:
Цитата:
Сообщение от sotex2 Посмотреть сообщение
обрезались бы такие цифры года
отрезается год спереди или сзади (если есть '.' - то с ней).
Безопасность с Content Security Policy
Ottava вне форума Ответить с цитированием
Старый 02.10.2020, 03:04   #10
sotex2
Пользователь
 
Регистрация: 21.09.2020
Сообщений: 21
По умолчанию

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

Код:
<?php $data = get_post_meta($post->ID, 'version', true) ;
         $result=explode('.' , $data);
              echo implode('.', array_slice($result, 0, 3) );  
?>
и этот вырезает нормально:

Код:
<?php
$data = get_post_meta($post->ID, 'version', true);
$result = preg_replace('#^(2019|2020|2021|2022)\.?#', '', $data);
$result = preg_replace('#\.?(2019|2020|2021|2022)$#', '', $result);
echo $result;
?>
Только как их объединить?

Последний раз редактировалось sotex2; 02.10.2020 в 04:14.
sotex2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать символ #7 в конце строки? harmager Общие вопросы Delphi 1 12.04.2015 13:27
Как убрать ненужный символ в конце значения ячейки? 27obesthand Microsoft Office Excel 3 18.10.2011 11:44
Как убрать буквы в конце ячейке? Anatoly1982 Microsoft Office Excel 4 09.10.2011 12:27
Как нолики в конце убрать? и в чем ошибка? lubafffka Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2008 18:52