2014-10-15 2 views
-4

나는 문자열을 가지고 : "이것은 내가 4 개 문자열로 분할 할 A [집/자동차]에서 [소년/소녀]입니다 :PHP 문자열 분할 및 결합은

  1. 이것은의 소년 집
  2. 이 문제는이 차의 소녀 자동차
  3. 에서 소년 집
  4. 의 소녀

내가 그렇게 할 수 있습니까? 감사합니다.

+0

을 나는 귀하의 질문에 어떤 PHP 코드를 볼 수 없습니다 도움이되기를 바랍니다. – EternalHour

+0

당신이 찾고있는 것을 "순열 (permutations)"이라고합니다. 대괄호로 대체를 정규 표현식으로 매칭 한 후에는 루프 또는 재귀 함수가 필요합니다. – 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

대단히 감사합니다. 루프가 필요하므로 전역 사례를 찾고 있는데 루프에 대해 얼마나 많은 단계가 있는지 모릅니다. (나의 영어를 위해 유감스럽게 생각한다) –