在php中查找字符串中所有可能的匹配项

时间:2017-08-11 11:07:45

标签: php string find

我正在研究php中的搜索功能。

我想从字符串中搜索所有可能的组合。

示例:IF搜索字符串是:BDS

然后可以找到下面给出的所有组合:

|

我想查找的示例字符串: ABDBDBSNIEKDKLDJSDBJKDKDDSBJDJDK

1 个答案:

答案 0 :(得分:1)

你只需再做一步就可以获得所有可能的字符串来搜索getPossibleStr($ str) 然后你必须搜索你正在研究的长字符串。

$searchString = array_unique(getPossibleStr("DBS")); //Get All possible string in array
findString($searchString); //Here that array contains possible string to pass and check in your big string
function getPossibleStr($str) {
    if (strlen($str) < 2) {
        return array($str);
    }
    $permutations = array();
    $tail = substr($str, 1);
    foreach (getPossibleStr($tail) as $permutation) {
        $length = strlen($permutation);
        for ($i = 0; $i <= $length; $i++) {
            $permutations[] = substr($permutation, 0, $i) . $str[0] . substr($permutation, $i);
        }
    }
    return $permutations;
}
function findString($searchString){
    $string = 'ABDBDBSNIEKDKLDJSDBJKDKDDSBJDJDK';
    $searchFlag = 0;
    foreach ($searchString as $searchStr) {
        if (strpos($string, $searchStr) !== FALSE) {
            echo "<br>Match found => ".$searchStr; 
            $searchFlag = 1;
        }
    }
    if($searchFlag == 0)
        echo "Not found!";
    }
}