Как найти все подстроки строки в PHP

Я должен преобразовать строки формы

"a b c"

в массивы формы

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

PHP обеспечивает собственную функцию для преобразования строк во все подстроки? В противном случае, каков путь наименьшего сопротивления для получения всех подстрок? Существует ли простой способ, возможно, взорвать () строку и использовать массив op для генерации всех [заказанных] перестановок?

Удачи!

5
задан ninjagecko 29 November 2011 в 03:27
поделиться

5 ответов

Использование IN-PHP-Array-Is-Tod-Tape-of-The-Ulane Way: P

function get_all_substrings($input, $delim = '') {
    $arr = explode($delim, $input);
    $out = array();
    for ($i = 0; $i < count($arr); $i++) {
        for ($j = $i; $j < count($arr); $j++) {
            $out[] = implode($delim, array_slice($arr, $i, $j - $i + 1));
        }       
    }
    return $out;
}

$subs = get_all_substrings("a b c", " ");
print_r($subs);
13
ответ дан 18 December 2019 в 07:29
поделиться
<?php
function get_all_substrings($input){
    $subs = array();
    $length = strlen($input);
    for($i=0; $i<$length; $i++){
        for($j=$i; $j<$length; $j++){
            $subs[] = substr($input, $i, $j);               
        }
    }
    return $subs;
}

$subs = get_all_substrings("Hello world!");
print_r($subs);

?>

Даже если есть причудливый двухклассник для достижения этого, я сомневаюсь, что это все более эффективно или легко понять (для любого, чтобы кто-нибудь понять, что они, вероятно, должны будут посмотреть на документы. Большинство людей, вероятно, получают то, что делает Docster Даже глядя).

7
ответ дан 18 December 2019 в 07:29
поделиться

Вы не можете Post Информационный перекрестный домен, поддомен или номер порта. Однако вы можете использовать JSONP, если у вас есть доступ к демону , так и запрашивающий сайт. Если данные должны быть возвращены, то демон должен поддерживать параметр запросов , и вернуть его правильно отформатированным.

Пройдите информацию на демон:

$.getJSON('http://domain.com:8080/url/here?callback=?', {
  key: 'value',
  otherKey: 'otherValue'
}, function(data){
     // Handles the callback when the data returns
});

Теперь просто убедитесь, что ваш демон обрабатывает обратный вызов . Например, если Callback = MyCallback Возврат от демона (единственное, что записано на страницу), должна выглядеть так:

для пар клавиши / значения:

mycallback( {'returnkey':'returnvalue', 'other':'data' });

для массива:

mycallback( [1,2,3] );

Если у вас нет JSONP или аналогичного механизма на месте, вы не можете обмениваться пересеченным доменом, используя jQuery.

-121--1257088-

Подстроки не являются перестановками. взорваться () строка, затем используйте два вложенных петель вместе с Array_slice () , чтобы получить соответствующие элементы.

1
ответ дан 18 December 2019 в 07:29
поделиться

Это некоторые из моих ссылок, но я хотел бы узнать больше:

  1. PELIE
  2. айва
  3. UI-образцы
-121--2861336-

Они уже могут быть мыслей о массивах этой формы.

Просто обратитесь к содержимому с помощью функции, которая принимает индекс в качестве параметра и возвращает строку нарезанную соответствующим образом.

0
ответ дан 18 December 2019 в 07:29
поделиться

Для даже довольно коротких струн требования памяти и времени выполнения взорвутся. Даже в родном коде это страшно проблема производительности.

Оправдайте, почему вам нужна эта функция, и вы получите другой способ по всей проблеме.

-4
ответ дан 18 December 2019 в 07:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: