我试图解析变量下面的文本海峡...如何解析变量
$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()),所以爆炸函数会抛出一个错误,那么得到这个值的最好方法是什么?谢谢。
我试图解析变量下面的文本海峡...如何解析变量
$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()),所以爆炸函数会抛出一个错误,那么得到这个值的最好方法是什么?谢谢。
$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,518
或3,283,518*10,569
等
可能会从您需要了解动态$海峡实际上是怎样的,但如果有更多的信息,它只是那些你也许可以做到以下几点
if (strpos($str, '(') !== false) {
$arr = explode('(',$str);
$num = str_replace(',','',$arr[0]);
} else {
//who knows what you want to do here.
}
如果你真的肯定的数字格式,可以将值之间尝试类似: ^([0-9]+,)*([0-9]+)
例如,将它与preg_match一起使用。 但是,如果它不是一个简单的格式,你应该去一个算术表达式解析器。
模拟解决方案:
<?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;
?>
看看http://stackoverflow.com/questions/5803679/parse-math-operations-with-php – 2012-03-30 20:13:24
我认为OP只是想在'('之前得到字符串,没有什么涉及数学运算 – ajreal 2012-03-30 20:15:41