从包含数字、字母和符号的字符串中提取浮点值[重复]

问题描述 投票:0回答:3

我想从以下字符串中获取值

146273.0017

(["JPY-XAU,146273.0017"]);

最好的方法是什么?

php floating-point text-extraction
3个回答
2
投票

您可以使用正则表达式

$str = '(["JPY-XAU,146273.0017"]);';

preg_match("/,(.*?)\"/", $str, $res);

echo $res[1]; // 146273.0017

1
投票
// First cleanup stuff we don't need:
$string = '(["JPY-XAU,146273.0017"]);';
$string = str_replace(array('(', ')', '[', ']', '"', ';'), '', $string);

// Split the inner values
$parts  = explode(',', $string);

// Echo the results
echo $parts[0];
echo $parts[1];

退货:

日元-XAU

146273.0017

如果您愿意,可以将该数字转换为浮点数,即: (float)$string[1]


1
投票

如果您正在寻找数字部分,那么正则表达式会抓住它:

$pattern = "/(\d*\.)?\d+/";
$subject = '(["JPY-XAU,146273.0017"]);';
if (preg_match($pattern, $subject, $match)) {
    print_r($match);
}

如果您正在寻找逗号后面的内容,并且忽略了它周围的两组括号(但正如您在注释中澄清的那样,它们是字符串的一部分,因此需要被忽略),那么您可以也使用正则表达式在逗号上分割:

$pattern = "/\[\((.*?),(.*?)\)\]/";
$subject = '(["JPY-XAU,146273.0017"]);';
if (preg_match($pattern, $subject, $match)) {
    print_r($match);
}

对您希望如何获得所请求的号码进行一些说明,有助于缩小适合您的答案的范围,或者如果这些答案(以及本页上的其他有效答案)都不适合您的情况。

© www.soinside.com 2019 - 2024. All rights reserved.