我的文字类似Food & Drinks
。我需要将此字词与food
或drinks
或seafood
...等相匹配,任何人都可以帮我解决这个问题。提前致谢。
$res = "campbell italian seafood. Italian Food of 2005 Award. Some drinks are very tasty";
$pattern = '/^((?!Food & Drinks).)*$/s';
if(preg_match_all($pattern, substr($res,10), $matches, PREG_OFFSET_CAPTURE)){
echo ++$count;
}else{
echo $count;
}
提前致谢。
答案 0 :(得分:0)
对于问题中的具体示例,以下内容将与seafood
,Food
和drinks
匹配。 :
/\w*(?:Food|Drinks)\w*/i
如果你不关心匹配整个单词seafood
- 并且只想匹配它的食物部分(如果你只计算多少匹配就是你需要的全部),你可以简单地使用方法:
'/Food|Drinks/i'
我不知道你从哪里得到字符串Food & Drinks
,或者其他可能的搜索词可能是什么样的,所以我只能建议你在问题中找到具体的例子。但要从Food & Drinks
转到Food|Drinks
,您可以使用str_replace
。
以下是在PHP中实现的示例:
$str = 'Food & Drinks';
$terms = str_replace(' & ', '|', $str);
$res = "campbell italian seafood. Italian Food of 2005 Award.
Some drinks are very tasty";
$pattern = '/\w*(?:'.$terms.')\w*/i';
preg_match_all($pattern, $res, $matches);
echo 'Count: '.count($matches[0]);
print_r($matches[0]);
输出
Count: 3
Array ( [0] => seafood [1] => Food [2] => drinks )