Существует строковая переменная, содержащая числовые данные с точками, например $x = "OP/1.1.2/DIR";
, Позиция числа данных может измениться при любых обстоятельствах по желанию пользователя, изменив ее внутри приложения, а слэш-панель может быть изменена любым другим персонажем; но данные с пунктирными цифрами являются обязательными. Итак, как извлечь данные с пунктиром, здесь 1.1.2
, из строки?
Используйте регулярное выражение :
(\d+(?:\.\d+)*)
Сломать:
\d+
найдите одну или несколько цифр \.
буквальное десятичное число .
персонаж \d+
за которым следует одна или несколько цифр (...)*
это означает совпадение 0 или более вхождений этого шаблона (?:...)
это говорит движку не создавать обратную ссылку для этой группы (в основном мы не используем ссылку, поэтому бессмысленно иметь ее) Вы не указали много информации о данных, поэтому я сделал следующие предположения:
Если какое-либо из этих допущений неверно, вам придется изменить регулярное выражение.
Пример использования:
$x = "OP/1.1.2/DIR"; if (!preg_match('/(\d+(\.\d+)*)/', $x, $matches)) { // Could not find a matching number in the data - handle this appropriately } else { var_dump($matches[1]); // string(5) "1.1.2" }