У меня есть строка: «Это [мальчик/девочка] в [дом/автомобиль] Я хочу, чтобы разделить его на 4 строки:PHP строка раскол и объединить
- Это мальчик в дом
- Это девушка в доме
- Это мальчик в машине
- Это девушка в машине
Как я могу это сделать? Спасибо.
У меня есть строка: «Это [мальчик/девочка] в [дом/автомобиль] Я хочу, чтобы разделить его на 4 строки:PHP строка раскол и объединить
Как я могу это сделать? Спасибо.
Я надеюсь, что это поможет вам
$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
спасибо очень. Я ищу глобальный случай, поэтому мне нужны циклы, но я не знаю, сколько шагов для цикла. (Извините за мой английский) –
Я не видит PHP кода в вашем вопросе. – EternalHour
То, что вы ищете, называется «перестановками». Вам понадобится цикл или рекурсивная функция после предпочтительного регулярного выражения, соответствующего альтернативам в квадратных скобках. – mario
См. Также [Необходимый алгоритм для создания простой программы (перестановки предложений)] (http://stackoverflow.com/q/5613089) для этого подхода. (Там также есть пример PHP. Используйте поиск, если вы только что пришли для копирования + вставки.) – mario