如何从PHP中的字符串中获取数字

时间:2014-05-05 13:00:35

标签: php string

我通过互联网搜索但我无法找到问题的解决方案。 我有一个包含数值的字符串,我想获取这些数值并将它们存储在一个不同的变量中。

这是我的字符串

$string = "WALIOFANYA MTIHANI : 70 
WASTANI WA SHULE : 138.2571 
NAFASI YA SHULE KIWILAYA: 25 kati ya 125 
NAFASI YA SHULE KIMKOA : 117 kati ya 571 
NAFASI YA SHULE KITAIFA : 1249 kati ya 15656 ";

输出我想要

$v1 = 70
$v2 = 138.2571
$v3 = 25
$v4 = 125
$v5 = 117
$v6 = 571
$v7 = 1249
$v8 = 15656

我尝试使用stristr()substr(),但我失败了;

这甚至可能吗?如果是这样我怎么能这样做?

请帮助。

3 个答案:

答案 0 :(得分:3)

$string = "WALIOFANYA MTIHANI : 70 
WASTANI WA SHULE : 138.2571 
NAFASI YA SHULE KIWILAYA: 25 kati ya 125 
NAFASI YA SHULE KIMKOA : 117 kati ya 571 
NAFASI YA SHULE KITAIFA : 1249 kati ya 15656 ";

preg_match_all('#([0-9.]+)#is', $string, $matches);
print_r($matches[1]);

答案 1 :(得分:1)

您可以使用preg_split:

$result = preg_split('~(?:[^\d.]++|(?<!\d)\.)+~', $str, null, PREG_SPLIT_NO_EMPTY);

答案 2 :(得分:-1)

preg_match_all('/\((\d+(?:\.\d+)?)\)/', $str, $matches)

应该适合你

$str = "WALIOFANYA MTIHANI : 70 
WASTANI WA SHULE : 138.2571 
NAFASI YA SHULE KIWILAYA: 25 kati ya 125 
NAFASI YA SHULE KIMKOA : 117 kati ya 571 
NAFASI YA SHULE KITAIFA : 1249 kati ya 15656 ";

代码如下:

if (preg_match_all('/\((\d+(?:\.\d+)?)\)/', $str, $matches) > 0) {
        var_dump($matches[1]);
    }