PHP에서 구분자 이스케이핑
문자가 특수 문자가 아닌 경우, 구분자로 사용할 때는 정규식 내부에서 이스케이프해야 합니다. 예를 들어 살펴보겠습니다.
구분자로 해시 기호(#)를 사용하고, 정규식 내부에서 앰퍼샌드(&) 문자를 검색한다고 가정해 봅시다. 앰퍼샌드는 특수 문자가 아니므로 이스케이프하지 않습니다:
<?php
echo preg_replace('#a&b#', '!', 'a&b'); // 출력: '!'
?>
이제 구분자가 앰퍼샌드(&)이고 정규식 내부에도 앰퍼샌드가 필요한 경우를 생각해 봅시다. 이 경우 내부의 앰퍼샌드는 이스케이프해야 하며, 그렇지 않으면 PHP 오류가 발생합니다:
<?php
echo preg_replace('&a\&b&', '!', 'a&b'); // 출력: '!'
?>
다음 코드의 오류를 수정하세요:
<?php
echo preg_replace('#a#b#', '!', 'a#b');
?>