如何获取字符串中带点的数字数据?

phe*_*mix 1 php

有一个字符串变量,其中包含带点的数字数据,例如$x = "OP/1.1.2/DIR";。数字数据的位置可以在任何情况下由用户通过在应用程序内部修改来改变,斜杠可以由任何其他字符改变;但虚线数字数据是强制性的。那么这里如何1.1.2从字符串中提取点数数据呢?

FtD*_*Xw6 5

使用正则表达式:

(\d+(?:\.\d+)*)
Run Code Online (Sandbox Code Playgroud)

分解:

  • \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"
}
Run Code Online (Sandbox Code Playgroud)