将字符串中包含的数字相乘 - PHP

时间:2013-07-12 09:39:35

标签: php

我们说我有一个字符串

$string = 'item_1 (600g x 8)';

然后我想获得600和8的乘积。输出将是:

Output: 4800.00g //600 * 8

这是php中的字符串操作,你们可以帮助我吗?

谢谢!

顺便说一下item_1 - 液体或固体物品(糖,酱汁) 600 - 卷 g - 测量单位(可以是ml,g,li等......) 8 - 数量

2 个答案:

答案 0 :(得分:4)

您没有回复我的格式问题,但我认为您会有更多这样的字符串。可以通过更改正则表达式来操纵规则。目前,标志和最后一个数字之间不允许有空格。您可以使用\s?引入可选空间的测试来更改此项。

$string = 'item_1 (600g x 8)';

preg_match("/\(([0-9]+)[^0-9]+\s?([\*\+\-\/])\s?([0-9]+)\)/", $string, $matches);

$param1 = $matches[1];
$sign = $matches[2];
$param2 = $matches[3];

$out = null;

switch ($sign) {
     case '+':
       $out = $param1 + $param2;
       break;
     case '-':
       $out = $param1 - $param2;
       break;
     case '*':
       $out = $param1 * $param2;
       break;
     case '/':
       $out = $param1 / $param2;
       break;
}

echo number_format($out, 2);

答案 1 :(得分:0)

对于那个确切的字符串,您可以使用以下内容;

<?php
preg_match_all('/(\d+)/', 'item_1 (600g x 8)', $matches);

echo ($matches[1][1] * $matches[1][2]);

如果任何其他字符串在整个字符串中只有3个数字的相似模式,那么这也应该起作用