Искать набор символов внутри строки независимо от ее положения в PHP

Привет, я хотел бы найти набор символов внутри строки, а затем удалить его из другой строки. Например,

$start_state = 'BCFSW|';

$possible_combinations = array('BF','BCF','BFS','BFW');

Я хотел бы, чтобы функция выполняла поиск каждого элемента массива из возможных_комбинаций независимо от его положения. Так, например, для 'BF' должен быть return true, поскольку оба символа присутствуют в BCFSW|.

Я бы также хотел удалить эти символы и сгенерировать из него новую строку массива и добавить ее в другой массив, который будет выглядеть примерно так.

$possible_states = array ('CSW|BF', 'SW|BCF', 'CW|BFS' ,'CS|BFW')

Не могли бы вы, ребята, помочь мне с этим? Это было бы большим подспорьем. Спасибо

Решает ли мой ответ вашу проблему?

Andreas 30.07.2018 12:51

Вы можете ответить на мой вопрос ?!

Andreas 30.07.2018 18:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
32
2

Ответы 2

Вы можете использовать регулярные выражения с функциями preg_match и preg_replace.

Пример с BF:

$found = preg_match('#B.*F#', $text);

Вернет истину, если $text - это BF, BAF, BZZF, ...

Вы можете искать все комбинации за один раз, если хотите, используя | (подробности см. В документации по регулярным выражениям).

Если порядок не имеет значения, регулярное выражение может быть '#[BF].*[BF]#

Затем вы можете использовать круглые скобки, чтобы ловить символы и изменять строку с помощью preg_replace().

То, что вы ищете, это "array_diff" . "array_intersect".

Array_diff находит то, что не соответствует между массивами, а array_intersect находит то, что совпадает.

$str = 'BCFSW|';

$arr = array('BF','BCF','BFS','BFW');

$str = str_split($str);
foreach($arr as $item){
    $temp = str_split($item);
    $new[] = implode("",array_diff($str, $temp)) . implode("",array_intersect($temp, $str));
}

var_dump($new);

Выход:

array(4) {
  [0]=>
  string(6) "CSW|BF"
  [1]=>
  string(6) "SW|BCF"
  [2]=>
  string(6) "CW|BFS"
  [3]=>
  string(6) "CS|BFW"
}

https://3v4l.org/8RvL2

Другие вопросы по теме