我想从以下字符串中获取值
146273.0017
。
(["JPY-XAU,146273.0017"]);
最好的方法是什么?
您可以使用正则表达式
$str = '(["JPY-XAU,146273.0017"]);';
preg_match("/,(.*?)\"/", $str, $res);
echo $res[1]; // 146273.0017
// 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]
如果您正在寻找数字部分,那么正则表达式会抓住它:
$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);
}
对您希望如何获得所请求的号码进行一些说明,有助于缩小适合您的答案的范围,或者如果这些答案(以及本页上的其他有效答案)都不适合您的情况。