你会如何解析这个成分线?

时间:2011-04-23 02:28:32

标签: parsing theory

我的文字区域充满了各种成分;通常采用[数量] [测量] [成分] [附加]格式。例如,一些成分可能是:

  

1汤匙大蒜,切碎
  1杯甜椒,切碎

我希望能够识别每种测量和成分 - 您将如何处理?我的思路是......

// loop thru line by line of textarea

// explode each line by the space thus line[0] would be 1, line[1] tablespoon, line[2] garlic... etc

现在这是我的问题,我不确定什么是有效率的。我是否通过db搜索该测量,成分等来运行每一行[X]?但由于“甜椒”被一个空间隔开,我不会得到一个匹配。

// does line[1] appear in the measurements table?
// does line[2] appear in the ingredients table?

其他人有什么创意解决方案吗?

2 个答案:

答案 0 :(得分:0)

将数据分隔为空格而不是另一个分隔符。例如,您可以这样做:

$strRecipe = "1 | tablespoon | bell pepper |  minced";

然后你可以使用:

$recipe = explode("|",$strRecipe);

现在您可以通过以下方式访问每个字段:$ recipe [0],$ recipe [1] ETC ETC

答案 1 :(得分:0)

尝试stripos()找到子字符串而不是explode()

$mytext = "1 tablespoon garlic, minced 1 cup bell pepper, chopped"; # or any text
$keyword = "bell pepper"; # or any search term

if (stripos($mytext, $keyword) === false) {
  # not found
  ...
  }
else {
  # found
  ...
  }

参考

您可以使用explode()(不推荐),但您也应该在搜索字词中分隔单词,并在数组中查找第一个关键字的出现位置,其中下一个关键字位于数组的下一个元素中,等等。这是不必要的并发症。