Определенное слово + цифра php регулярка

94
18 мая 2021, 19:30
$dannie = "Длина: 100 м
Длина 100 метров
Длина 100м";

Нужна регулярка которая будет находить определенное слово (в данном случае длина), и получать цифру идущую за ней, и на этом поиск прекращала, а не шла дальше и цепляла все остальные цифры. Почему то так не срабатывает. Почему не могу понять:

$str = preg_match_all("/([Длина:]+\d)/ui", $dannie, $out);
echo $dlina_result = implode(', ', $out[0]);

Пример: http://sandbox.onlinephpfunctions.com/code/b4efb8e5baba773d4c88e175d9ec8b105a5cd05d

Answer 1

Используйте

$dannie = "Длина: 100 м
Длина 100 метров
Длина 100м";
if (preg_match_all('~Длина:\s*\K\d+(?:[.,]\d+)?~u', $dannie, $matches)) {
    echo implode(', ', $matches[0]);
}

Пример работы кода онлайн. См. также демо регулярного выражения.

Подробности

  • Длина: - буквальный текст
  • \s* - 0 и более пробельных символов
  • \K - оператор, удаляющий весь найденный текст из текущего совпадения
  • \d+ - 1 и более цифр
  • (?:[.,]\d+)? - 1 или 0 повторов последовательности:
    • [.,] - точка или запятая
    • \d+ - 1 и более цифр
Answer 2

Регулярка длина\D*(\d+)/i, брать первую группу:

var s = `Длина: 100 м 
Длина 100 метров 
Длина 100м` 
 
console.log(s.match(/длина\D*(\d+)/i)[1])

Answer 3

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

preg_match_all("/(?<=Длина:)\s*(\d+)/ui", $dannie, $out);
echo $out[0][0];
READ ALSO
обезопасить sql запрос

обезопасить sql запрос

прошу подсказать, как можно обезопасить запрос от sql инъекцийЗапрос такого вида:

104
Как занести массив в базу данных mysql?

Как занести массив в базу данных mysql?

У меня есть вот такой массив который хранится в сессии $_SESSION['product_ids']Для занесения данных в БД я использую ORM RedBeanPHP

300
Installation error of 1c bitrix

Installation error of 1c bitrix

Я действовал согласно видео на Install PHP, Apache and MySQLОдним из отличий является то, что у меня была несколько другая иерархия папок и файлов

329
Количество входных процессов (EP)

Количество входных процессов (EP)

Прошу советаСделан сайт на laravel - небольшой магазин\каталог

105