라이브러리

[PHP] preg_quote - 정규 표현식 문자 인용




PHP preg_quote 함수


PHP의 `preg_quote` 함수는 정규 표현식 패턴에서 사용되는 특수 문자를 이스케이프(escape)해주는 함수입니다. 이스케이프된 문자는 문자열로 사용될 때 예상치 못한 동작을 일으키는 문자를 방지하는 데 도움이 됩니다.

# 예제


#hostingforum.kr
php

// 특수 문자를 이스케이프하지 않은 문자열

$pattern = '/^hello world$/';



// 특수 문자를 이스케이프한 문자열

$escaped_pattern = preg_quote($pattern);



echo "특수 문자를 이스케이프하지 않은 패턴: $pattern
";

echo "특수 문자를 이스케이프한 패턴: $escaped_pattern
";



// 결과

// 특수 문자를 이스케이프하지 않은 패턴: /^hello world$/

// 특수 문자를 이스케이프한 패턴: //^hello world$//



위 예제에서, `^`와 `$`는 정규 표현식에서 시작과 끝을 나타내는 특수 문자입니다. 이 문자열을 이스케이프하지 않으면, PHP는 이 문자열을 정규 표현식 패턴으로 인식하고, 예상치 못한 동작을 일으킬 수 있습니다. 하지만 `preg_quote` 함수를 사용하여 이스케이프한 후, 이 문자열은 이스케이프된 문자열로 사용됩니다.

# 사용 예제


#hostingforum.kr
php

// 사용자 입력을 받는 예제

$user_input = 'hello world';



// 사용자 입력을 정규 표현식으로 검사하는 예제

$pattern = '/^hello world$/';



if (preg_match($pattern, $user_input)) {

    echo "사용자 입력이 일치합니다.
";

} else {

    echo "사용자 입력이 일치하지 않습니다.
";

}



// 결과

// 사용자 입력이 일치하지 않습니다.



// 사용자 입력을 이스케이프한 후 정규 표현식으로 검사하는 예제

$escaped_pattern = preg_quote($user_input);



if (preg_match('/^' . $escaped_pattern . '$/', $user_input)) {

    echo "사용자 입력이 일치합니다.
";

} else {

    echo "사용자 입력이 일치하지 않습니다.
";

}



// 결과

// 사용자 입력이 일치합니다.



위 예제에서, 사용자 입력을 받은 후, 이 입력을 정규 표현식으로 검사합니다. 하지만 사용자 입력이 특수 문자를 포함하고 있으면, 예상치 못한 동작을 일으킬 수 있습니다. 하지만 사용자 입력을 이스케이프한 후, 정규 표현식으로 검사하면, 예상치 못한 동작을 일으키지 않습니다.

결론


`preg_quote` 함수는 정규 표현식 패턴에서 사용되는 특수 문자를 이스케이프해주는 함수입니다. 이스케이프된 문자열은 이스케이프되지 않은 문자열과 다르게 동작할 수 있습니다. 따라서, 사용자 입력이나 다른 문자열을 정규 표현식으로 검사할 때, 이스케이프를 사용하여 예상치 못한 동작을 방지하는 것이 중요합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 315 페이지

검색

게시물 검색