2011-01-21 5 views
24

문자열의 일부로 백 슬래시가 필요합니다. 내가 어떻게 해?PHP에서 백 슬래시를 사용하여 문자열을 만드는 방법은 무엇입니까?

+0

* (참고)를 사용

$string = 'abc\def'; 

* 문자열 (http://de.php.net/manual/en/language.types. string.php) – Gordon

+0

[왜 "\"는 PHP의 문자열에 저장하는 동안 오류가 발생합니까?] (http://stackoverflow.com/questions/1673186/why-gives-error-while-storing-it-in -string-in-php) – Bobby

답변

44

사용 따옴표 따옴표

$string = "abc\\def"; 
+2

이 특별한 예에서 백래시는 단독으로 발생할 수 있습니다. 그럼에도 불구하고 그것을 벗어나는 것은 좋은 습관입니다. 그러나 작은 따옴표도 마찬가지입니다. – mario

+1

단일 인용 부호의 경우 백 슬래시가 문자열의 끝에 있으면이 옵션이 작동하지 않습니다.작은 따옴표에 이중 백 슬래시를 사용하면 모든 시나리오에서 작동합니다. 따옴표 유형에 관계없이 후자의 예가 더 좋습니다. – jskidd3

39

짧은 답변 :

를 사용하여 두 개의 백 슬래시.

긴 대답 :

당신은 종종 하나의 백 슬래시를 사용할 수 있지만 때로는 두 가지가 필요합니다.

  • 당신의 문자열이 바로 백 슬래시 다음 작은 따옴표 나 큰 따옴표와
  • 문자로 둘러싸여 여부 : 단일 백 슬래시 두 가지에 따라 사용할 수 있습니다 때.

항상 다른 백 슬래시 백 슬래시 탈출하는 것이 가장 좋습니다, 그래서 당신은 백 슬래시가 많은 경우에 이스케이프 문자로 처리됩니다 따옴표 문자열이있는 경우 :

$s = "foo\\bar" 

단일 인용 문자열 백 슬래시에서을 작은 따옴표 또는 다른 백 슬래시가 나오지 않으면 리터럴이됩니다. 출력에 단일 인용 문자열을 가진 단일 백 슬래시가 일반적이 쓸 수 있도록 : 행에

$s = 'foo\bar' 

그러나 출력에 두 개의 백 슬래시를 당신이 필요합니다

$s = 'foo\\\\bar' 

당신은 항상 두 개의 백 슬래시를 사용하는 경우 절대로 틀리지 않을 것이다.

+2

작은 따옴표 안에 \를 사용할 때 예외를 인용 할 때 +1 –

+0

'if (! preg_mat 백 슬래시를 피하기 위해 백 슬래시를 3 개 사용해야했습니다. \\\ ('/' . 하나, 둘, 노력하지 않았다. 이해가 안되는 이유 3 – user2118559

+0

@ user2118559 작은 따옴표로 묶인 문자열의 처음 두 개가 하나를 생성하고, 세 번째는 단독으로 남습니다 (작은 따옴표 또는 백 슬래시가 뒤 따르지 않음). 따라서 두 개의 백 슬래시가 정규 표현식에 전달 된 문자열에 삽입됩니다. 그런 다음 regexp는 첫 번째 문자를 사용하여 두 번째 문자를 이스케이프 처리하여 하나의 "실제"(실제로 텍스트에 있음) 백 스페이스 문자를 만듭니다. 대신이 답변으로 제안 된 것과 같이 네 개를 사용할 수 있습니다 (네 개가 두 개가되어 문자열을 파싱 한 다음 나머지 두 개가 하나가되어 정규 표현식을 파싱합니다). – FrancescoMM

4

"c:\\windows\\"과 같은 모든 백 슬래시를 이스케이프 처리해야합니다.

+0

이것은 더 좋은 예입니다. – user3284463

관련 문제