如何在变量中解析str

时间:2012-03-30 20:10:55

标签: php regex

我正在尝试解析变量中的以下文本...

$str = 3,283,518(10,569 / 2,173)

我正在使用以下代码获取3,283,518

    $arr = explode('(',$str);
    $num = str_replace(',','',$arr[0]); //prints 3283518

上面的$ str是动态的,有时可能只有3,283,518(意思是w / o())所以爆炸函数会抛出一个错误,那么得到这个值的最佳方法是什么?感谢。

4 个答案:

答案 0 :(得分:3)

$str = "3,283,518(10,569 / 2,173)";

preg_match("/[0-9,]+/", $str, $res);
$match = str_replace(",", "", array_pop($res));

print $match;

这将返回3283518,只需获取仅由数字和逗号组成的字符串$str的第一部分。这也适用于3,283,5183,283,518*10,569

答案 1 :(得分:0)

可能需要你提供更多有关动态$ str的信息,但如果只是在这些值之间你可能会做以下事情

if (strpos($str, '(' ) !== false) {
     $arr = explode('(',$str);
     $num = str_replace(',','',$arr[0]);
} else {
     //who knows what you want to do here.
}

答案 2 :(得分:0)

如果您确定数字格式,可以尝试以下方法: ^([0-9]+,)*([0-9]+) 例如,将它与preg_match一起使用。 但如果它不是一个简单的格式,你应该使用算术表达式解析器。

答案 3 :(得分:0)

模拟解决方案:

    <?php

$str = '3,283,518(10,569 / 2,173)';

if (strstr($str, '('))
{
    $arr = explode('(',$str);
    $num = str_replace(',','',$arr[0]);
}
else
{
    $num = str_replace(',','',$str);
}

    echo $num;

?>