我有一个字符串变量$nutritionalInfo
,它可以有 100gm、10mg、400cal、2.6Kcal、10percent 等值...我想解析这个字符串并将值和单位部分分成两个变量$value
和$unit
。有没有可用的php函数?或者我怎么能在php中做到这一点?
问问题
1136 次
3 回答
6
使用 preg_match_all,像这样
$str = "100gm";
preg_match_all('/^(\d+)(\w+)$/', $str, $matches);
var_dump($matches);
$int = $matches[1][0];
$letters = $matches[2][0];
对于浮点值,试试这个
$str = "100.2gm";
preg_match_all('/^(\d+|\d*\.\d+)(\w+)$/', $str, $matches);
var_dump($matches);
$int = $matches[1][0];
$letters = $matches[2][0];
于 2013-04-23T08:03:09.893 回答
4
使用正则表达式。
$str = "12Kg";
preg_match_all('/^(\d+|\d*\.\d+)(\w+)$/', $str, $matches);
echo "Value is - ".$value = $matches[1][0];
echo "\nUnit is - ".$month = $matches[2][0];
于 2013-04-23T08:03:45.477 回答
2
我有一个类似的问题,但这里没有一个答案对我有用。其他答案的问题是他们都假设你总是有一个单位。但有时我会使用“100”而不是“100kg”这样的普通数字,而其他解决方案会导致值为“10”而单位为“0”。
这是我从这个答案中得到的更好的解决方案。这会将数字与任何非数字字符分开。
$str = '70%';
$values = preg_split('/(?<=[0-9])(?=[^0-9]+)/i', $str);
echo 'Value: ' . $values[0]; // Value: 70
echo '<br/>';
echo 'Units: ' . $values[1]; // Units: %
于 2017-10-01T19:49:20.333 回答