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