PHP 매뉴얼
이전 |  | 다음

# preg_replace_callback

(PHP 4 >= 4.0.5, PHP 5)

preg_replace_callback -- 콜백을 이용한 정규 표현식 검색과 치환을 수행합니다.

## 설명

mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit])

이 함수의 작동은 `replacement` 대신 `callback`를 지정하는 것을 제외하면, preg_replace()와 거의 동일합니다. `callback`는 주어진 문자열에 매치되는 요소의 배열을 콜해서 넘깁니다. 콜백은 치환된 문자열을 반환해야 합니다.

예 1. preg_replace_callback() 예제

`<?php
// 이 문장은 2002년에 사용되었습니다.
// 2003년에 적합하게 업데이트합니다.
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// 콜백 함수
function next_year($matches)
{
// 보통: $matches[0]는 전채 매치입니다.
// $matches[1]은 첫번째 '(...)'에 들어있는
// 서브 패턴 매치로 이어집니다.
return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
"|(\d{2}/\d{2}/)(\d{4})|",
"next_year", $text);
// 결과는:
// April fools day is 04/01/2003
// Last christmas was 12/24/2002
?>`

종종 단 한번의 preg_replace_callback()에서 사용하기 위한 `callback` 함수가 필요합니다. 이 경우에, create_function()을 사용해서 preg_replace_callback() 호출 안에서 익명의 함수를 만들 수 있습니다. 이 방법으로 호출에 필요한 모든 정보를 한군데에 위치하게 하여, 다른곳에서 사용되지 않는 콜백함수의 네임스페이스를 절약할 수 있습니다.

예 2. preg_replace_callback()과 create_function()

`<?php /* 문단 첫번째의 대문자를 소문자로 변경하는 * 유닉스 스타일 명령줄 필터 */ $fp = fopen("php://stdin", "r") or die("can't read stdin"); while (!feof($fp)) { $line = fgets($fp); $line = preg_replace_callback( '|<p>\s*\w|', create_function( // 여기에선 싱글 쿼트(')가 적합합니다. // 그렇지 않으면 모든 $를 \$로 이스케이프 해야합니다. '$matches', 'return strtolower($matches[0]);' ), $line ); echo $line; } fclose($fp); ?>`

참고: preg_replace(), create_function().

이전 | 처음으로 | 다음
preg_quote | 위로 | preg_replace