2014-10-15 3 views
-4

У меня есть строка: «Это [мальчик/девочка] в [дом/автомобиль] Я хочу, чтобы разделить его на 4 строки:PHP строка раскол и объединить

  1. Это мальчик в дом
  2. Это девушка в доме
  3. Это мальчик в машине
  4. Это девушка в машине

Как я могу это сделать? Спасибо.

+0

Я не видит PHP кода в вашем вопросе. – EternalHour

+0

То, что вы ищете, называется «перестановками». Вам понадобится цикл или рекурсивная функция после предпочтительного регулярного выражения, соответствующего альтернативам в квадратных скобках. – mario

+0

См. Также [Необходимый алгоритм для создания простой программы (перестановки предложений)] (http://stackoverflow.com/q/5613089) для этого подхода. (Там также есть пример PHP. Используйте поиск, если вы только что пришли для копирования + вставки.) – mario

ответ

1

Я надеюсь, что это поможет вам

$string = 'This is a [boy/girl] in a [house/car]'; 
preg_match_all('/\[(.+?)\]/', $string, $matches); 
$find_array = $matches[0]; 
foreach($matches[1] as $row) { 
    $replace_array[] = explode("/", $row); 
} 

$output[] = str_replace($find_array,array($replace_array[0][0],$replace_array[1][0]),$string); 
$output[] = str_replace($find_array,array($replace_array[0][1],$replace_array[1][0]),$string); 
$output[] = str_replace($find_array,array($replace_array[0][0],$replace_array[1][1]),$string); 
$output[] = str_replace($find_array,array($replace_array[0][1],$replace_array[1][1]),$string); 

print_r($output); 

// выводит

[0] => This is a boy in a house 
[1] => This is a girl in a house 
[2] => This is a boy in a car 
[3] => This is a girl in a car 
+0

спасибо очень. Я ищу глобальный случай, поэтому мне нужны циклы, но я не знаю, сколько шагов для цикла. (Извините за мой английский) –

Смежные вопросы