Есть строка, которая содержит числа, — , пробелы между ними, и см:
$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);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Делаю сайт на WP с использованием woocommerceУ меня есть категория hot-offers и соответственно сделан шаблон taxonomy