Есть строка, которая содержит числа, — , пробелы между ними, и см:
$string = 50 — 55 см
Числа могут быть разными.
Как удалить всё и оставить только последнее число: 55. Без букв, без пробелов и тире?
Пробовал использование preg_replace('/см/','',$string);
но так я удалю только см
$string = '50 — 55 см';
echo preg_replace('/^.*?\b(\d+)\hсм$/m', '$1', $string);
preg_match_all('/\d+/', '50 — 55 см', $matches);
echo end($matches[0]);
Регулярное выражение: /\d+/
будет выбирать все подстроки, в которых встречается одна или более (квантификатор +
), цифра (\d
), а все остальные символы будут проигнорированы.
Все совпадения помещаются в массив $matches[0]
. Функция end()
вернёт последний элемент массива - число 55.
Сделал корявенько, мб есть варианты лучше:
if(preg_match('/см/i',$string)){
$newvalue = strpos($string,"—"); //находим позицию символа
$string = trim(substr($string,0,$newvalue)); //делим по треб. символу и удаляем возможные пробелы
}
Как вариант:
$string = '50 — 55 см';
$num = preg_replace('/.*\D+(\d+)\D+$/i', '$1', $string);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю сайт на WP с использованием woocommerceУ меня есть категория hot-offers и соответственно сделан шаблон taxonomy