강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김철준님의 프로필 이미지
김철준

작성한 질문수

PHP 7+ 프로그래밍

23 - PCRE

preg_replace_callback 질문드립니다.

작성

·

418

0

var_dump(preg_replace_callback('/^(.*)@(.*)$/',
    function($matches){
    return $matches;
}, 'hmmi@kakao.com'));

 

이렇게 했을 때 오류가 나타나는 이유가 뭘까요??

 

답변 1

1

정상우님의 프로필 이미지
정상우
지식공유자

이 코드를 보면 경고를 던집니다. 배열을 문자열로 변환할 수 없다고 말이죠. preg_replace_callback() 의 두번째 파라매터에 들어가는 콜백은 반환 값이 배열이 아닌 문자열이어야 합니다.

PHP: preg_replace_callback - Manual

callback

A callback that will be called and passed an array of matched elements in the subject string. The callback should return the replacement string. This is the callback signature:

handler(array $matches): string


$matches
는 배열이죠. 따라서 다음과 같이 수정할 수 있습니다.

$str = preg_replace_callback(
    '/^(.*)@(.*)$/',
    function ($matches) {
        [$email, $user, $domain] = $matches;

        return $email;
    }, 
    'hmmi@kakao.com'
);

var_dump($str);
김철준님의 프로필 이미지
김철준

작성한 질문수

질문하기