Php 如何解析变量中的str

Php 如何解析变量中的str,php,regex,Php,Regex,我正在尝试解析变量中的以下文本 $str = 3,283,518(10,569 / 2,173) 我使用下面的代码获得3283518 $arr = explode('(',$str); $num = str_replace(',','',$arr[0]); //prints 3283518 上面的$str是动态的,有时它可能只有3283518(意味着w/o()),所以explode函数将抛出一个错误,那么获取该值的最佳方法是什么?谢谢。可能需要您提供更多关于$str的动态特性

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

$str = 3,283,518(10,569 / 2,173)
我使用下面的代码获得
3283518

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

上面的$str是动态的,有时它可能只有3283518(意味着w/o()),所以explode函数将抛出一个错误,那么获取该值的最佳方法是什么?谢谢。

可能需要您提供更多关于$str的动态特性的信息,但是如果只是介于这些值之间,您可能需要执行以下操作

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

可能需要您提供更多关于$str的动态性的信息,但是如果只是介于这些值之间,您可能需要执行以下操作

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一起使用。
但如果不是简单的格式,您应该使用算术表达式解析器。

如果您确实确定数字格式,您可以尝试以下方法:
$str = "3,283,518(10,569 / 2,173)";

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

print $match;
^([0-9]+,)*([0-9]+)
例如,将其与preg_match一起使用。 但是,如果它不是一种简单的格式,那么应该使用算术表达式解析器

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

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

print $match;
这将返回3283518,只需获取仅由数字和逗号组成的字符串
$str
的第一部分即可。这也适用于
3283518
3283518*10569

这将返回3283518,只需获取仅由数字和逗号组成的字符串
$str
的第一部分即可。这也适用于
3283518
3283518*10569
等模拟解决方案:

    <?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;

?>

模拟解决方案:

    <?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;

?>


看一看,我认为OP只是想在
之前得到字符串(
,没有什么涉及Math)看一看,我认为OP只是想在
之前得到字符串(
,不涉及math@seoppc这将花费您不到一分钟的时间进行测试。但是是的,它会。@seoppc这将花费您不到一分钟的时间进行测试。但是是的,它会。