Существует строковая переменная, содержащая числовые данные с точками, например $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" }