PHP에서의 백슬래시 문제
백슬래시는 PHP의 특수 문자입니다. 이는 문자열에서 슬래시가 자기 자신을 나타내게 하려면 두 번 써야 한다는 것을 의미합니다:
<?php
$str = '\\ \\\\ \\\\\\'; // 실제 문자열은 '\ \\ \\\' 입니다.
?>
백슬래시는 정규식의 특수 문자이기도 합니다. 이는 정규식 내부에서 슬래시가 자기 자신을 나타내게 하려면 무려 네 번 써야 한다는 것을 의미합니다:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // 출력: '! ! !!'
?>
이제 검색 패턴이 백슬래시가 한 번 이상인 정규식을 작성해 보겠습니다.
이 경우 그룹화 없이 앞의 4개의 문자에 대해
+ 연산자를 사용할 것입니다:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // 출력: '! ! !'
?>
다음 문자열이 주어졌습니다:
<?php
$str = 'a\\b c\\d e\\f';
?>
이 문자열에서 문자, 백슬래시, 문자 패턴의 모든 부분 문자열을 찾으세요.
다음 문자열이 주어졌습니다:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
이 문자열에서 문자, 임의 횟수의 백슬래시, 문자 패턴의 모든 부분 문자열을 찾으세요.