我正在尝试解析变量中的以下文本...
$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())所以爆炸函数会抛出一个错误,那么得到这个值的最佳方法是什么?感谢。
答案 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,518
或3,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;
?>