使用regex php匹配给定单词的字符串或子字符串

时间:2013-11-20 11:01:39

标签: php regex

我的文字类似Food & Drinks。我需要将此字词与fooddrinksseafood ...等相匹配,任何人都可以帮我解决这个问题。提前致谢。

$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;
    }

提前致谢。

1 个答案:

答案 0 :(得分:0)

对于问题中的具体示例,以下内容将与seafoodFooddrinks匹配。 :

/\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 )