我有各种各样的成分输入。
3倍胡萝卜 1/2杯牛奶(或者可以是1/2杯牛奶) 1茶匙橄榄油我还有一份成分列表和测量单位,所以我可以检查它们是否在字符串中。
现在我不知道如何根据我的成分或单位列表中的值来分割字符串
我能想到的只是检查单词是否在数组中
$listIngredients = // a massive list pulled from the database like below
$units = ['x', 'cup', 'tsp'];
$results = [];
foreach($result->recipe_ingredients as $ingredient)
{
$results = strtr($ingredient, 'of ', '');
$results = explode($ingredient);
// using str_plural() I want to check if ingredient or units of measurement exist. then
// split them if they do so I have an array having the number, then unit, then ingredient
// then I will save each in the database under different columns.
}
还是会有更好的方法吗?可能会检查何时有空格或int停止,例如。 3倍胡萝卜或1/2杯。我很困惑> _<
编辑:我认为id扔出去了,我知道爆炸需要2个参数。我的问题更多的是关于什么参数,如果我需要超过2,例如我想检查字符串中的int,unit以及成分。答案 0 :(得分:1)
我不太清楚你的意思
我认为id把它扔出去,我知道爆炸需要2 参数。我的问题更多的是关于什么参数,如果我 需要超过2,例如我想检查字符串的int,unit和 也是一种成分。
但我的猜测是,你应该检查一下: Exploding by Array of Delimiters
你也可以使用它来检查字符串是否包含这个简单的旧解决方案的字符串的一部分(对strtolower()不区分大小写)
if (strpos(strtolower($haystack), strtolower($needle)) !== false) {
echo 'true';
}
我会尝试使用您的关键短语列表来爆炸字符串,然后再次爆炸数组元素,直到没有可用的关键短语。此外,你应该将已经使用过的分隔符附加到左边的元素上,这样你就不会丢失你的成分(带有某种空白字符,这样就可以防止重新分裂)。