извлекать вес кг из веревки php - PullRequest
1 голос
/ 26 мая 2020

Здравствуйте, у меня есть вот такая строка

$str = "tea dae 15 abc 7,2 kg abc aa 1 aa"

Я хочу получить только такое значение в кг

$str = "7,2kg";

Я пробовал это, но не работает

$result = str_replace(' ', '', $str);
$result = str_replace(',', '.', $result);
$result = strtok($result, "kg");
$result = str_replace('.', ',',(float) filter_var( $result, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ));

благодарю за помощь

1 Ответ

3 голосов
/ 26 мая 2020

Вы можете использовать

$str = "tea dae 15 abc 7,2 kg abc aa 1 aa";
$result = "";
if (preg_match('~(\d+(?:,\d+)?)\s*(kg)\b~', $str, $m)) {
  $result = $m[1] . $m[2];
}
echo $result;

См. PHP demo .

Регулярное выражение

(\d+(?:,\d+)?)\s*(kg)\b

См. демонстрация регулярных выражений . Он будет соответствовать

  • (\d+(?:,\d+)?) - Группа захвата 1:
    • \d+ - одна или несколько цифр
    • (?:,\d+)? - необязательная последовательность запятой и 1 или более цифр
  • \s* - 0 или более пробелов
  • (kg)\b - kg захвачено в Группе 2 как целое слово (\b является границей слова).

Конечным результатом является объединение двух групп.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...