Вырезать (обрезать) текст в строке

У меня есть строка с 3 параметрами блока (слова, цифры, косые черты), и мне нужно разделить ее и распечатать только параметры последнего блока. Я делаю это:

<?php
$howmuch = "17шт / 119ml / 255грн";
echo preg_replace("/(\\d\\w\\ / )(\\d\\w\\ / )(\\d\\w\\ / )$/i", "$3", $howmuch);
?>

Мне нужно напечатать только 255грн, но мой скрипт ничего не делает. Пожалуйста, помогите мне решить проблему. Спасибо тебе за все.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
68
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Если формат фиксирован, вы можете получить значение без какого-либо регулярного выражения, используя

explode(" / ", $howmuch)[2]

См. Демо PHP. Он разделит строку с space-/-space и предоставит вам третий элемент результирующего массива.

В качестве альтернативы вы можете извлекать номер с грн после него, используя операцию preg_match (этот подход позволяет вам найти совпадение независимо от того, сколько / было до или после совпадения):

$howmuch = "17шт / 119ml / 255грн";
if (preg_match("/\d+\s*грн/ui", $howmuch, $results)) {
    echo $results[0];
}

См. Демо PHP.

Если значение может содержать дробную часть, вы можете использовать "/\d+(?:[.,]\d+)?\s*грн/ui", где (?:[.,]\d+)? соответствует необязательной последовательности . или ,, за которой следует 1+ цифр.

Почему бы не сделать это простым и понятным, например, вот так:

$howMuch = '17шт / 119ml / 255грн';
$blocks  = explode('/',$howMuch);
echo $blocks[2];

Здесь не нужно много объяснять или выяснять, почему он делает то, что делает.

Все варианты без регулярных выражений:

echo explode('/', $howMuch)[2];

если вам нужно, чтобы строка состояла из трех частей

if (substr_count($howmuch, '/') > 1) {
    echo explode('/', $howMuch)[2];
}

если вы используете версию php до 5.4

$chunks = explode('/', $howMuch);
echo $chunks[2];

Другие вопросы по теме