我的代码打印出一个如下所示的数组:
foreach ($array as $line) {
echo $line;
}
结果:
ingredients 1
2x egg
ingredients 2
2x carrot
cabbage
1x potato
问题在于用户输入成分的方式可能因用户而异。有些用户可能会将其键入为
1x potoato
或
1 - potato
或
1 potato
甚至只是
potato
当这样的相对开放结束时,正确获取数量和成分类型的有效方法是什么?
答案 0 :(得分:1)
这是一个解析输入的简单方法,它并不完美,但是没有这样的方法可以按照你想要的方式完全工作。
$ingredients = Array();
foreach($lines as $line) {
$matches = Array();
if(!preg_match("/^.*?(\d+).*?(\S+)(\s+)?$/", $line, $matches))
array_push($ingredients, Array(1, $line));
else
array_push($ingredients, Array(intval($matches[1]), $matches[2]));
}
<强>附录强>
OP实现了类似的代码
$parsedCards = Array();
foreach($lines as $line) {
$temp = Array();
if(!preg_match('/(\d+).*?\s+(.+)\s/', $line, $temp)) {
array_push($parsedCards, Array(1, ltrim($line)));
} else {
array_push($parsedCards, Array(intval($temp[1]), $temp[2]));
}
}
答案 1 :(得分:-1)
我建议使用正则表达式来搜索可能的数量,然后搜索成分的名称。这可以构建simply或者更复杂,我不会尝试,但使用正则表达式有很多可能性。