[PHP] 문자열에 포함된 다수의 특정 문자를 순차적으로 치환하기
문자열에 포함된 동일한 다수의 특정 문자를 순차적으로 치환하는 방법이다. 순차적으로 치환한다는 것의 의미가 불분명할 수 있는데.. 예를 들면 이런 것이다. a b a c d
문자열에서 a
를 a_1 b a_2 c d
로 치환하는 것이다. 설명을 자세히 할 능력이 없기 때문에 코드를 보자.
<?php
$string = 'test [form] string with [form] replace';
$form = '[ id : id_{{idx}} ]';
function replaceForm($form) {
static $idx = 0;
$idx++;
return str_replace('{{idx}}', $idx, $form);
}
echo preg_replace_callback('#\[form\]#',
function($match) use ($form) {
return replaceForm($form);
},
$string);
위 코드는 문자열에 포함된 [form]
문자를 [ id : id_1 ]
과 같은 형식으로 치환하여 출력한다. 결과는 아래와 같다.
test [ id : id_1 ] string with [ id : id_2 ] replace
참고 : http://www.php.net/manual/en/function.preg-replace-callback.php
위의 예제를 수정하여 동일한 웹페이지에 다수의 [form]
문자열을 입력폼으로 치환하여 출력할 때 입력 필드의 id
와 label의 for
를 각각 매치시켜줄 때 사용할 수 있다.