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这将花费您不到一分钟的时间进行测试。但是是的,它会。