Php 使用正则表达式查找字符串中的单词数组

Php 使用正则表达式查找字符串中的单词数组,php,mysql,Php,Mysql,我正在寻找搜索字符串中的一些单词,下面是我的代码 $str="Chup Raho Episode 5 by Ary Digital 16th September 2014"; $keywords=array('Ary digital','geo'); echo in_string($keywords,$str,'all'); 这个函数返回true或false,如果word找到它,则返回1,如果没有,则返回0。我需要返回我正在搜索的word,因为我想在mysql中对这个word进行另一次搜

我正在寻找搜索字符串中的一些单词,下面是我的代码

$str="Chup Raho Episode 5 by Ary Digital 16th September 2014";

$keywords=array('Ary digital','geo');

echo in_string($keywords,$str,'all');

这个函数返回true或false,如果word找到它,则返回1,如果没有,则返回0。我需要返回我正在搜索的word,因为我想在mysql中对这个word进行另一次搜索。 若函数找到“Ary digital”,那个么它应该返回“Ary digital found”。
需要帮助。谢谢。

您可能希望执行以下操作(未经测试):


然后打印r($matches)以查看matches数组的输出并获取所需的位。从那里您可以返回真/假等。

只需重写您已有的内容即可。将匹配的关键字推送到一个新数组并返回该数组,而不是返回布尔值

function in_string($keywords, $string, $searchAll = true) {
    $matches = array();
    foreach ($keywords as $keyword) {
        if (stripos($string, $keyword) !== false)
            array_push($matches, $keyword);
        if (!$searchAll)
            break;
    }
    return $matches;
}

顺便说一句,正则表达式的速度要慢得多(通常是10+)。

如果数组只是数组('word1'、'word2'、'word3')(即不是多维数组),那么只需使用preg_match('.#('.内爆('124;',$array.)#',$string,$matches)就可以了。谢谢。只需从stripos函数中删除$
preg_match('#(word1|word2|word3)#',$string,$matches);
function in_string($keywords, $string, $searchAll = true) {
    $matches = array();
    foreach ($keywords as $keyword) {
        if (stripos($string, $keyword) !== false)
            array_push($matches, $keyword);
        if (!$searchAll)
            break;
    }
    return $matches;
}