Php 我想从字符串中提取匹配的单词并返回它,包括前面的两个单词和后面的两个单词(如果找到)

Php 我想从字符串中提取匹配的单词并返回它,包括前面的两个单词和后面的两个单词(如果找到),php,mysql,sql,full-text-search,preg-match-all,Php,Mysql,Sql,Full Text Search,Preg Match All,我想做一个像大多数搜索引擎一样的把戏 假设我有这个字符串: $str = "Hello Mr. Ben From the UK, nice to meet you"; 我想要一个正则表达式来搜索两个或两个以上的单词,本例中的单词是to和Ben 我可以使用preg\u match\u all preg_match_all("#[\w+]*(to|Ben)+\w*#isx", $str,$matches); 它工作得很好,但是我需要返回每个短语中匹配的单词。 例如,单词to,我希望将其返回与此格

我想做一个像大多数搜索引擎一样的把戏

假设我有这个字符串:

$str = "Hello Mr. Ben From the UK, nice to meet you";
我想要一个正则表达式来搜索两个或两个以上的单词,本例中的单词是to和Ben

我可以使用
preg\u match\u all

preg_match_all("#[\w+]*(to|Ben)+\w*#isx", $str,$matches);
它工作得很好,但是我需要返回每个短语中匹配的单词。 例如,单词to,我希望将其返回与此格式匹配的nicetomeet,即包装在周围的单词中

我也要为Ben做同样的事

我可以使用
explode
preg\u match
loop
,所以我认为最好使用
preg\u match\u all

PS:我还有一个简单的问题,我可以在从数据库中获取数据时使用
sql查询执行此“技巧”吗


谢谢。

我用这个正则表达式做的

preg_match_all("#(.){0,15}(to|Ben)+(.){0,15}#isx", $str,$matches, PREG_PATTERN_ORDER , 1);
var_dump($matches);
共享所有人的答案