我希望从字符串中提取匹配的单词并将其返回,包括前面的2个单词和后面的2个单词(如果找到)

时间:2012-12-18 07:37:04

标签: php mysql sql full-text-search preg-match-all

我想像大多数搜索引擎那样做一个技巧。

假设我有这个字符串:

$str = "Hello Mr. Ben From the UK, nice to meet you";

我想要一个正则表达式来搜索两个或更多单词,本例中的单词是 Ben

我可以使用preg_match_all

来完成
preg_match_all("#[\w+]*(to|Ben)+\w*#isx", $str,$matches);

它工作正常,但我需要返回每个短语中匹配的单词。 例如,这个词,我希望返回它匹配这种格式很好见面,即包裹在周围的单词

我想为 Ben

做同样的事情

我可以使用explodepreg_matchloop这样做,所以我认为最好通过preg_match_all来完成。

PS:我还有另外一个简单的问题,我可以这样做“技巧”但是从数据库中提取数据时使用sql query吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我是用这个正则表达式做的

preg_match_all("#(.){0,15}(to|Ben)+(.){0,15}#isx", $str,$matches, PREG_PATTERN_ORDER , 1);
var_dump($matches);

分享所有

的答案