仅保留特定字母之间的数字

时间:2016-06-17 20:49:23

标签: php regex

我想在几个单独的长文本字符串中保留一个值,其中一个部分是共同的。其中一个文本字符串:

N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen

共同部分是" Kr 204.500,"我只需要这些数字,所以我可以在以后用它们进行计算。

3 个答案:

答案 0 :(得分:1)

尝试类似的东西:

$results = array();

preg_match(
    "/Kr (\d*.?\d*)/",
    "N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen",
    $results
);

// output: array(
//     0 => Kr 204.500
//     1 => 204.500
// )

然后,如果你想将数字分成数组,你需要这样做:

if (isset($results[1])) {
    $numbers = preg_split("/\./", $results[1]);

    // output = array(
    //     0 => 204
    //     1 => 500
    // )
}

在您的反馈后进行修改

$results = array();

preg_match(
    "/Kr (\d*.?\d*)/",
    "N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen",
    $results
);

$number = isset($results[1]) ? preg_replace("/\./", "", $results[1]) : null;

// output: 204500

答案 1 :(得分:0)

要获取Kr之后的数字/点数,您可以使用以下表达式:

Kr\h*    # Kr as string, followed by spaces or tabs
([.\d]+) # capture numbers like 123, 12.5 into the first group

a demo on regex101.com

<小时/> 在PHP

<?php
$string = 'N-05-0040(119) f 2005 svart hp Ml:153 - 160 - 20 - 75 Tot 31- 3- 3- 6- 13 (4)29,7M - (4)28,2aK Kr 204.500, 2pr 2010, Trener: Ole Olesen';

$regex = '~
            Kr\h*    # Kr as string, followed by spaces or tabs
            ([.\d]+) # capture numbers like 123, 12.5 into the first group
          ~x';

preg_match_all($regex, $string, $matches);
print_r($matches);
?>

请参阅a demo on ideone.com

答案 2 :(得分:-1)

想想我自己也许已经解决了..

$var = strstr($var, 'Kr. ');
$var = substr($var, 0, strpos($var, ", "));
$var = str_replace("Kr. ","",$var);
$var = str_replace(".","",$var);

感谢您的帮助!有任何改进建议吗?