Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:提取字符串的版本号_Php - Fatal编程技术网

PHP:提取字符串的版本号

PHP:提取字符串的版本号,php,Php,我每次都得到不同的字符串 我需要从字符串中提取版本号。当版本号可以有不同的类型时,例如: v1.3 V1.3 v 2.4.1 V 2.4.1 version1.3 version 1.3 Version2.4.1 Version 2.4.1 输出需要是:1.3或2.4.1 另一个问题是,字符串可以在版本号旁边包含数字。 完成此任务的最快方法是什么?我将使用正则表达式: 代码: Regex101: 您可以使用preg\u match执行此操作。这将匹配字符串末尾的任何版本。正则表达式是/(

我每次都得到不同的字符串

我需要从字符串中提取版本号。当版本号可以有不同的类型时,例如:

v1.3
V1.3
v 2.4.1
V 2.4.1

version1.3
version 1.3
Version2.4.1
Version 2.4.1
输出需要是:
1.3或2.4.1

另一个问题是,字符串可以在版本号旁边包含数字。


完成此任务的最快方法是什么?

我将使用正则表达式:

代码:


Regex101:


您可以使用
preg\u match
执行此操作。这将匹配字符串末尾的任何版本。正则表达式是
/(\d+\.?)+$/

$versions = array(
    'v1.3',
    'V1.3',
    'v 2.4.1',
    'V 2.4.1',
    'version1.3',
    'version 1.3',
    'Version2.4.1',
    'Version 2.4.1',
);

foreach($versions as $version) {
    if (0 !== preg_match('/(\d+\.?)+$/', $version, $matches)) {
        echo 'original: ' . $version . '; extracted: ' . $matches[0] . PHP_EOL;
    }
}
输出


使用正则表达式从字符串中除去除0-9和“.”之外的所有内容。Google Regex获取更多信息。@Sloancher Hi,还有一个问题是字符串可以包含版本号旁边的数字。@user2413244检查我的帖子是否正常?@Sahil.Gulati,如果是这样的话,你需要提供不包含版本号的数字的示例。Hi。谢谢你的例子。但当我编辑我的问题时:另一个问题是,字符串可以在我不需要的版本号旁边包含数字。您的代码返回v1.3而不是1.3。我已经查过了。你在用第二个索引吗?[1]?
$versions = array(
    'v1.3',
    'V1.3',
    'v 2.4.1',
    'V 2.4.1',
    'version1.3',
    'version 1.3',
    'Version2.4.1',
    'Version 2.4.1',
);

foreach($versions as $version) {
    if (0 !== preg_match('/(\d+\.?)+$/', $version, $matches)) {
        echo 'original: ' . $version . '; extracted: ' . $matches[0] . PHP_EOL;
    }
}
original: v1.3; extracted: 1.3
original: V1.3; extracted: 1.3
original: v 2.4.1; extracted: 2.4.1
original: V 2.4.1; extracted: 2.4.1
original: version1.3; extracted: 1.3
original: version 1.3; extracted: 1.3
original: Version2.4.1; extracted: 2.4.1
original: Version 2.4.1; extracted: 2.4.1
<?php
ini_set("display_errors", 1);
$versions=array(
"v1.3",
"V1.3",
"v 2.4.1",
"V 2.4.1",
"version1.3",
"version 1.3",
"Version2.4.1",
"Version 2.4.1");

foreach($versions as $version)
{
    preg_match("/[vV](?:ersion)?\s*\K[\d\.]+/", $version,$matches);
    print_r($matches);
}
Array
(
    [0] => 1.3
)
Array
(
    [0] => 1.3
)
Array
(
    [0] => 2.4.1
)
Array
(
    [0] => 2.4.1
)
Array
(
    [0] => 1.3
)
Array
(
    [0] => 1.3
)
Array
(
    [0] => 2.4.1
)
Array
(
    [0] => 2.4.1
)