PHP - 检查字符串中出现在彼此一定距离内的2个单词的匹配项

时间:2013-11-14 19:13:24

标签: php string

我好好看看,我仍然不确定能做到这一点的功能是什么。

如果我有像

这样的字符串
$str = 'These people came from some area in France';

这两个单词出现在上面的字符串中。

$match1 = 'from'; $match2 = 'France';

如何检查这两个单词是否在彼此的20个字符之内?

3 个答案:

答案 0 :(得分:2)

是。您可以使用函数mb_strpos。它在字符串中找到第一次出现字符串的位置。因此,如果您在两个字符串中使用,则可以检查它们之间的差异是否为20。

答案 1 :(得分:2)

您可以使用正则表达式(explain)执行此操作:

$str = 'These people came from some area in France';
$match1 = 'from';
$match2 = 'France';

$is = (bool)preg_match('/\b' . preg_quote($match1) . '\b.{1,20}\b' . preg_quote($match2) . '\b/i', $str);
var_dump($is); # $is variable will be TRUE if there is a match

<强> Demo

答案 2 :(得分:0)

已经输入了,所以我发布了: - )

if(abs(strpos($str, $match1) - strpos($str, $match2)) <= 20) {
    //within 20
}

如果外观顺序无关紧要,请使用abs()