在php中获取所有可能的子字符串

时间:2016-07-03 08:45:56

标签: php substring

我正在尝试获取所有输入子字符串的列表。 输入= a,子串{''' a'} 输入= ab,子串{''' a'''' ab'' ba' ;} 输入= abc,子串{''' a'''' c'' ab&#39 ;,' BC'' CA'' BA'' CB'' AC'&#39 ; ABC'' ACB'' BAC'' BCA''驾驶室'' CBA' } 等等。

我试过的代码就在这里

function get_substr($string){
        $array=str_split($string);
        static $k=0;
        for ($i=0; $i <count($array) ; $i++) { 
            for ($j=0; $j <count($array) ; $j++) { 
                $new_array[$k]=substr($string, $i, $j - $i + 1);
                $k++;

            }
        }
        return($new_array);

    }

我有以下代码的o / p

enter image description here

enter image description here

请建议我需要做哪些更改或做其他任何其他想法。

3 个答案:

答案 0 :(得分:1)

function find_posible_substr($input){
    $input_len = strlen($input);
    $possubstr = array();
    $i = 0;
    while($i < $input_len){
        $j = 0;
        while($j < $input_len){
            $possubstr[] = substr($input, $j, $i + 1);
            if(substr($input, $j, $i + 1) == $input){
                break;
            }
            $j++;
        }
        $i++;
    }
    return $possubstr;
}

我不知道您是否还在这个问题上。但是我还是想分享我的。 如果输入为abc,则输出将如下所示。

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => ab
    [4] => bc
    [5] => c
    [6] => abc
)

答案 1 :(得分:0)

<?php
// function to generate and print all N! permutations of $str. (N = strlen($str)).
function permute($str,$i = null,$n = null) {
   if(is_null($n)) $n = mb_strlen($str);
   if(is_null($i)) $i = 0;
   if ($i == $n)
       print "$str \n";
   else {
        for ($j = $i; $j < $n; $j++) {
          swap($str,$i,$j);
          permute($str, $i+1, $n);
          swap($str,$i,$j); // backtrack.
       }
   }
}
// function to swap the char at pos $i and $j of $str.
function swap(&$str,$i,$j) {
    $temp = $str[$i];
    $str[$i] = $str[$j];
    $str[$j] = $temp;
}   

$str = "hey";
permute($str); // call the function.

请参阅此SO answer

答案 2 :(得分:0)

$ str =“ abcd”; $ str_arr = str_split($ str);

for($ i = 0; $ i <= count($ str_arr)-1; $ i ++){

for($j = $i+1 ; $j <= count($str_arr) ; $j++){

  for($k = $i; $k <= $j-1; $k++){
        $subsrt1.= $str_arr[$k];
  }
  $substr[] = $subsrt1;
  $subsrt1 = '';

}

} print_r($ substr);