2017-04-02 13 views
0

毎回異なる文字列を取得します。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 or 2.4.1

1つの以上の問題は、その文字列は、バージョン番号の横に数字を含めることができます。

このタスクを実行するにはどうすればよいでしょうか?

+2

Regexを使用して、0〜9と "。"以外のすべてを削除します。文字列から。詳細については、Google Regexをご覧ください。 –

+0

@SloanThrasherこんにちは、 もう1つの問題は、文字列にバージョン番号の横に数字が含まれることです。 – user2413244

+0

@ user2413244投稿がうまく機能しているかどうかを確認しますか? –

答えて

2

私はこのために正規表現を使用したい:

コード:

<?php 

function getVersion($str) { 
    preg_match("/(?:version|v)\s*((?:[0-9]+\.?)+)/i", $str, $matches); 
    return $matches[1]; 
} 

print_r(getVersion("Version 2.4.1")); 

?> 

Regex101:あなたはこれを行うにはpreg_matchを使用することができます

https://regex101.com/r/6WnQKt/3

+0

こんにちは。例のおかげで。しかし、私は私の質問を編集する:もう一つの問題は、文字列は私が必要としないバージョン番号の横に数字を含むことができるということです。 – user2413244

+0

あなたのコードは1.3ではなく1.3を返します。私は今チェックした。 – user2413244

+0

2番目のインデックスを使用していますか? [1]? – Neil

0

。これは、文字列の最後にあるすべてのバージョンに一致します。正規表現は/(\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; 
    } 
} 

出力

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 
0

PHP code demo

<?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 
) 
関連する問題