PHP에서는 큰따옴표를 사용합니다. PHP에서 작은따옴표와 큰따옴표 문자열의 차이점은 무엇입니까? PHP 이스케이프 따옴표

이 짧은 기사에서는 사용 방법과 위치를 보여줍니다. PHP의 따옴표.

PHP의 작은따옴표(아포스트로피)

작은따옴표로 묶인 문자열은 PHP에서 어떤 방식으로도 처리되지 않습니다. 즉, 작은따옴표는 그 사이에 포함된 텍스트를 있는 그대로 나타냅니다.

// 올바른 에코 "인생은 어때?"; echo "잘 지내세요? $name"; echo "잘 지내세요?".$name; // 잘못된 echo "잘 지내세요? $name";

작은따옴표와 큰따옴표 안의 특수 문자

예를 들어 탭 문자(\t)가 슬래시 및 문자 t가 아닌 탭 문자로 해석되도록 하려면 탭 문자가 포함된 텍스트 줄을 큰따옴표로 묶어야 합니다. \' 및 \\는 작은따옴표로만 사용할 수 있습니다. 다른 모든 이스케이프 시퀀스(\n, \r, \$ 등)는 작은따옴표 안에 허용되지 않습니다.

// 잘못된 에코 "잘 지내세요?\n"; // 올바른 에코 "잘 지내세요?\n";

문자열 내에서 큰따옴표를 이스케이프하려면 백슬래시 \" 앞에 따옴표를 넣으세요.

// 잘못된 에코 "

무슨 일이야?

"; // 올바른 에코 "

무슨 일이야?

"; 에코 "

무슨 일이야?

";

PHP의 큰따옴표

큰따옴표로 묶인 텍스트는 매우 다르게 처리됩니다. 예를 들어, 큰따옴표로 묶인 변수는 해당 값으로 대체됩니다. 이렇게 하면 작성하기가 편리해집니다 SQL 쿼리큰따옴표를 사용합니다.

$query = "INSERT INTO 테이블(게시물, 작성자, 텍스트, 날짜) VALUES ("$id","$author","$text","$date"");

문자열 형식을 지정하려면 아포스트로피 또는 큰따옴표 중 어떤 유형의 따옴표를 사용해야 합니까?

PHP에서 큰따옴표와 작은따옴표의 차이점을 살펴보고 예제를 사용하여 언제 어느 것을 사용해야 하는지 알아보세요.

변수 및 이스케이프 시퀀스 특수 문자, 작은따옴표로 묶인 문자열에서 발생하는 내용은 처리되지 않습니다. 아포스트로피로 묶인 문자열은 큰따옴표로 묶인 비슷한 문자열보다 PHP 인터프리터에서 훨씬 빠르게 처리됩니다.

그 이유는 간단합니다. PHP 인터프리터는 큰따옴표로 묶인 문자열에서 변수가 있는지 추가로 확인하고 변수가 발견되면 변수 이름 대신 해당 값이 문자열에 삽입됩니다. 그러나 아포스트로피로 묶인 줄은 인터프리터에 의해 일반 텍스트로 인식되며 PHP는 이 줄에서 어떤 변환도 수행하지 않습니다. 어쨌든 작은따옴표로 묶인 문자열을 처리하는 것이 더 빠르다는 것은 분명하다고 생각합니다.

먼저 문자열을 정의하는 방법을 설명한 다음 작은따옴표로 묶인 문자열을 처리하는 속도가 얼마나 빨라지는지 확인해 보겠습니다.

문자열을 정의하는 가장 간단한 방법은 문자열을 작은따옴표(")로 묶는 것입니다. 작은따옴표로 묶인 문자열 내에서 작은따옴표를 사용하려면 문자열 앞에 백슬래시(\)를 붙여야 합니다. 즉, 이스케이프 처리해야 합니다. 작은따옴표 앞이나 줄 끝에 있으면 이를 복제해야 합니다. 다른 문자를 이스케이프하려고 하면 백슬래시도 인쇄됩니다.

다음은 작은따옴표를 사용하는 예입니다.
// 출력: 단순 문자열
echo "간단한 문자열";
// 인쇄: 나 여기 있어요
echo "나 여기 있어요";
// 출력: 삽입되지 않습니다: \n 새 줄
echo "다음 항목은 삽입되지 않습니다:\nnewline";
// 출력: $example 변수도 대체되지 않습니다.
echo "$example 변수도 대체되지 않습니다."; 문자열이 큰따옴표(")로 묶인 경우, PHP는 특수 문자에 대해 더 많은 이스케이프 시퀀스를 인식하고 변수 이름을 해당 값으로 문자열로 대체합니다. 작은따옴표와 마찬가지로, 큰따옴표로 묶인 문자열 안에 큰따옴표를 사용하려면 큰따옴표 앞에는 백슬래시 문자(\)가 와야 합니다.

다음은 큰따옴표를 사용하는 예입니다.
// 출력: 단순 문자열
echo "간단한 문자열";
// 출력: 회사 "Snowdrop"
echo "회사 \"Snowdrop\"";
// 출력: 그러면 새 줄이 생성됩니다.
echo "새 줄로 넘어갑니다 \n";
// 출력: 변수가 대체됩니다.
$example = "대체됩니다";
echo "변수 $example"; 또한 "\n"(개행), "\r"(캐리지 리턴) 시퀀스는 HTML이 아닌 일반 텍스트에 대한 것임을 기억해야 합니다. 따라서 브라우저에서는 변경 사항을 볼 수 없습니다( 소스 코드페이지).

작은따옴표가 큰따옴표보다 얼마나 빠른지 알아봅시다. 측정을 위해 간단한 테스트 스크립트를 작성하고, 직접 테스트할 경우 PC나 서버의 하드웨어에 따라 결과가 달라질 수 있다는 점을 즉시 알려드립니다.
// 루프 시작 부분의 타임스탬프를 반환합니다.
$start = 마이크로타임(true);
// 100만번의 반복을 위한 루프 생성
for ($i = 0; $i< 1000000; $i++) {
$text = "여기에 문자열이 있습니다.";
}
// 소요된 시간을 계산합니다.
$time = (마이크로타임(true) - $start); 결과: 0.09초.

작은따옴표를 큰따옴표로 바꾸면:
$text = "여기에 문자열이 있습니다."; 결과는 0.10초가 됩니다.

보시다시피, 텍스트 문자열을 사용할 때 실행 시간의 차이는 매우 작으며 전혀 존재하지 않는다고 말할 수도 있습니다. 문자열과 변수를 결합하려고 할 때 재미가 시작됩니다.
$text = "여기에 문자열 $i가 있습니다."; 또는
$text = $i."여기에 문자열이 있습니다."; 결과는 대략 0.27초입니다.

그 차이는 꽤 눈에 띕니다. 연결과 큰따옴표는 변수가 문자열에 추가될 때 성능에 분명히 영향을 미칩니다.

서버는 코드를 처리할 때 변수, 상수 등에 대한 큰따옴표의 모든 내용을 확인합니다. 시간이 걸린다. 그리고 서버는 작은 따옴표 사이에 있는 내용을 미리 만들어진 텍스트로 처리하고 거기에 무엇이 있는지는 신경 쓰지 않습니다. 작은따옴표와 큰따옴표의 성능 차이는 매우 작지만 로드가 많은 프로젝트를 개발하는 경우 몇 밀리초 절약은 이미 승리입니다.

PHP의 문자열은 모든 길이의 문자 집합입니다. C와 달리 문자열에는 프로그램에 어떤 영향도 미치지 않는 널 문자가 포함될 수도 있습니다. 즉, 문자열을 사용하여 이진 데이터를 저장할 수 있습니다. 문자열의 길이는 사용 가능한 RAM의 크기에 의해서만 제한됩니다.

PHP에서 문자는 바이트와 동일합니다. 즉, 정확히 256개의 문자가 가능하다는 의미입니다. 이는 또한 PHP가 기본 유니코드를 지원하지 않는다는 것을 의미합니다. 일부 유니코드 지원은 다음 함수에 의해 제공됩니다. utf8_encode()그리고 utf8_디코드() .

문자열은 표준 함수를 사용하여 쉽게 처리할 수 있으며 해당 문자에 직접 액세스할 수도 있습니다.

문자열 변수의 간단한 예:

$a= "단지 문자열 변수에 저장된 텍스트일 뿐입니다.";
에코 $a ; //"이것은 문자열 변수에 작성된 텍스트입니다."를 출력합니다.
?>

이제 데이터 유형 구문을 자세히 살펴보겠습니다. .

문자열 유형의 구문

문자열은 세 가지 방법으로 정의할 수 있습니다.

문자열을 정의하는 가장 간단한 방법은 작은따옴표(기호)로 묶는 것입니다. " ).

다른 많은 언어와 마찬가지로 문자열 내에서 작은따옴표를 사용하려면 앞에 백슬래시 문자( \ ), 즉 화면에 표시합니다. 백슬래시가 작은따옴표 앞에 와야 하거나 줄 끝에 와야 하는 경우 이를 복제해야 합니다. 다른 문자를 이스케이프하려고 하면 백슬래시도 인쇄됩니다! 따라서 일반적으로 백슬래시 자체를 이스케이프 처리할 필요가 없습니다.

다른 두 구문과 달리, 안에 포함된 문자열에 나타나는 특수 문자에 대한 변수 및 이스케이프 시퀀스는, 아니다처리중입니다.

다음은 작은따옴표를 사용하는 예입니다.

에코 "이것은 간단한 문자열입니다";

에코 "줄에 삽입할 수도 있습니다.
따라서 개행 문자,
그게 정상이니까"
;

// 출력: Arnold는 "나는 돌아올 것이다"라고 말한 적이 있습니다.
에코 "어느 날 Arnold는 '나는 돌아올 것이다'라고 말했습니다.";

에코 "C:\\*.*를 삭제하셨나요?";

// 출력: C:\*.*를 삭제하셨나요?
echo "C:\*.*를 삭제하셨나요?" ;

// 출력: 삽입되지 않습니다: \n 새 줄
에코 "이것은 삽입되지 않습니다:\nnewline";

// 출력: $expand 및 $either 변수는 대체되지 않습니다.
에코 "$expand 및 $either 변수는 대체되지 않습니다.";
?>

문자열이 큰따옴표로 묶인 경우( " ), PHP는 특수 문자에 대해 더 많은 이스케이프 시퀀스를 인식합니다.

제어 순서표:

후속 의미
\N 개행(ASCII에서는 LF 또는 0x0A(10))
\아르 자형 캐리지 리턴(CR 또는 ASCII의 0x0D(13))
\티 가로 탭(HT 또는 ASCII의 0x09(9))
\\ 백슬래시
\$ 달러 표시
\" 큰따옴표
\{1,3} 정규식에 해당하는 일련의 문자, 8진수 체계의 문자
\x(1,2) 정규 표현식에 해당하는 문자 시퀀스, 16진수 체계의 문자

다른 문자를 기억하기 위해 백슬래시도 인쇄된다는 점을 다시 한 번 기억하세요!

문자열을 정의하는 또 다른 방법은 다음을 사용하는 것입니다. heredoc 구문 ("<<< "). 후에<<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

닫는 식별자는 행의 첫 번째 열에서 시작해야 합니다. 또한 식별자는 PHP의 다른 모든 태그와 동일한 명명 규칙을 따라야 합니다. 즉, 영숫자 문자와 밑줄만 포함하고 숫자가 아닌 문자나 밑줄로 시작해야 합니다.

주목! 닫는 식별자 줄에는 세미콜론( ; ). 이는 식별자가 세미콜론 앞이나 뒤에 공백이나 탭이 있을 수 없음을 의미합니다. 닫는 식별자 앞의 첫 번째 문자는 운영 체제에서 정의한 대로 개행 문자여야 한다는 점을 이해하는 것도 중요합니다. 예를 들어 Windows®에서는 다음과 같습니다. \아르 자형.

이 규칙을 위반하고 닫는 식별자가 "깨끗"하지 않은 경우 닫는 식별자는 누락된 것으로 간주되며 PHP는 계속해서 이를 추가로 찾습니다. 이 경우 올바른 종료 식별자를 찾을 수 없으면 스크립트 끝에 줄 번호를 처리하는 데 오류가 발생합니다.

Heredoc-text는 큰따옴표 없이 문자열과 동일한 방식으로 동작합니다. 이는 heredoc에서 따옴표를 이스케이프 처리할 필요가 없지만 위의 이스케이프 시퀀스를 계속 사용할 수 있음을 의미합니다. 변수는 처리되지만 heredoc 내에서 복잡한 변수를 사용할 때는 문자열로 작업할 때만큼 주의해야 합니다.

heredoc 문자열 정의의 예:

$str =<<예시라인,
여러 줄을 다루고,
heredoc 구문을 사용합니다.
EOD;

/* 변수를 사용하는 더 복잡한 예입니다. */
클래스 foo
{
var $foo ;
var $bar ;

함수 foo()
{
$this -> foo = "푸" ;
$this -> bar = array("Bar1" , "Bar2" , "Bar3" );
}
}

$foo = 새로운 foo();
$name = "내 이름" ;

에코<<내 이름은 "$name"입니다. $foo를 입력 중이에요-> foo.
이제 나는 추론 중입니다.
( $foo -> 바 [ 1 ]) .
그러면 대문자 "A"가 출력됩니다.
\x41
EOT;
?>

저는 PHP 프로그래밍 전문가는 아니지만 PHP에서 작은따옴표, 때로는 큰따옴표로 묶인 문자열이 포함된 일부 코드를 보는 이유가 약간 혼란스럽습니다.

.NET이나 C 언어에서 작은따옴표로 묶인 경우 문자열이 아니라 문자라는 뜻입니다.

해결책

당신이 알아야 할 것

$a = "이름"; $b = "나의 $a"; == "내 이름" $c = "내 $a"; != "내 이름"

PHP에서는 작은따옴표를 사용하여 "a" , "my name" , "abc xyz" 와 같은 상수 문자열을 정의하고, 큰따옴표를 사용하여 "a $b $c $d" 와 같은 식별자를 포함하는 문자열을 정의합니다.

그리고 또 다른 점은

"내 이름"을 에코합니다.

보다 빠른

"내 이름"을 에코합니다.

에코 "나의" . $a;

보다 느림

"나의 $a"를 에코합니다.

이는 사용된 다른 문자열에도 해당됩니다.

PHP에서 작은따옴표 안의 텍스트는 문자열 값으로 처리되는 반면, 큰따옴표 안의 텍스트는 해당 값을 바꾸고 처리하여 변수를 구문 분석합니다.

$test = "변수"; echo "안녕하세요 $test 선생님"; // 출력은 다음과 같습니다: Hello Mr 변수 echo "Hello Mr $test"; // 출력은 다음과 같습니다: Hello Mr $test

여기서 큰따옴표는 값을 구문 분석하고 작은따옴표는 $test 변수를 구문 분석하지 않고 문자열 값으로 처리됩니다.

두 종류의 중첩 문자는 모두 문자열입니다. 한 유형의 인용을 사용하여 다른 유형의 인용을 마무리하는 것이 편리합니다. """ 및 """ . 따옴표 유형 간의 가장 큰 차이점은 중첩된 식별자 참조가 작은 따옴표 내부가 아닌 큰 따옴표 내부로 대체된다는 것입니다.

문자열은 문자 집합입니다. PHP에서 문자는 바이트와 동일합니다. 즉, 정확히 256개의 문자가 가능하다는 의미입니다. 이는 또한 PHP가 기본 유니코드를 지원하지 않는다는 것을 의미합니다. 일부 유니코드 지원은 utf8_encode() 및 utf8_decode() 함수에 의해 제공됩니다.

참고: 문자열이 매우 크면 문제가 없습니다. PHP에서는 문자열 크기에 사실상 제한이 없으므로 문자열 길이에 대해 걱정할 이유가 전혀 없습니다.

통사론

    문자열은 세 가지 방법으로 정의할 수 있습니다.

작은따옴표

문자열을 정의하는 가장 간단한 방법은 작은따옴표(" 문자)로 묶는 것입니다.

다른 많은 언어에서처럼 문자열 안에 작은따옴표를 사용하려면 앞에 백슬래시(\)를 붙여야 합니다. 즉, 이스케이프 처리해야 합니다. 백슬래시가 작은따옴표 앞에 와야 하거나 줄 끝에 와야 하는 경우 이를 복제해야 합니다. 다른 문자를 이스케이프하려고 하면 백슬래시도 인쇄됩니다! 따라서 일반적으로 백슬래시 자체를 이스케이프 처리할 필요가 없습니다.

참고: PHP 3에서는 이 경우 E_NOTICE 수준 메시지가 발행됩니다.

참고: 다른 두 구문과 달리 작은따옴표로 묶인 문자열에 나타나는 특수 문자에 대한 변수 및 이스케이프 시퀀스는 처리되지 않습니다.

Echo "이것은 단순한 문자열입니다."; echo "일반적인 방법이므로 이 방법으로 문자열에 개행 문자를 삽입할 수도 있습니다."; // 출력: Arnold가 말한 적이 있습니다: "나는 돌아올 것이다" echo "Arnold는 한 번 말했다: "나는 돌아올 것이다""; // 출력: C:\*.*를 삭제하셨나요? echo "C:\\*.*를 삭제하셨나요?"; // 출력: C:\*.*를 삭제하셨나요? echo "C:\*.*를 삭제하셨나요?"; // 출력: 삽입되지 않습니다: \n 새 줄 echo "삽입되지 않습니다: \n 새 줄"; // 출력: $expand 및 $either 변수는 대체되지 않습니다. echo "$expand 및 $either 변수는 대체되지 않습니다.";

큰따옴표

문자열이 큰따옴표(")로 묶인 경우 PHP는 특수 문자에 대해 더 많은 이스케이프 시퀀스를 인식합니다.

표 11-1. 이스케이프 시퀀스

반복합니다. 다른 문자를 기억하기 원한다면 백슬래시도 인쇄됩니다!

그러나 큰따옴표로 묶인 문자열의 가장 중요한 속성은 변수를 처리하는 것입니다. 자세한 내용 보기: 문자열 처리.

Heredoc

문자열을 정의하는 또 다른 방법은 heredoc 구문("

닫는 식별자는 행의 첫 번째 열에서 시작해야 합니다. 또한 식별자는 PHP의 다른 모든 태그와 동일한 명명 규칙을 따라야 합니다. 즉, 영숫자 문자와 밑줄만 포함하고 숫자가 아닌 문자나 밑줄로 시작해야 합니다.

주목

닫는 식별자 줄에는 세미콜론(;)을 제외한 다른 문자가 포함되지 않는다는 점에 유의하는 것이 매우 중요합니다. 이는 식별자를 들여쓰기해서는 안 되며 세미콜론 앞이나 뒤에 공백이나 탭이 있을 수 없음을 의미합니다. 닫는 식별자 앞의 첫 번째 문자는 운영 체제에서 정의한 대로 개행 문자여야 한다는 점을 이해하는 것도 중요합니다. 예를 들어 Macintosh에서는 \r입니다.

이 규칙을 위반하고 닫는 식별자가 "깨끗"하지 않은 경우 닫는 식별자는 누락된 것으로 간주되며 PHP는 계속해서 이를 추가로 찾습니다. 이 경우 올바른 종료 식별자를 찾을 수 없으면 스크립트 끝에 줄 번호를 처리하는 데 오류가 발생합니다.

Heredoc 텍스트는 큰따옴표가 없어도 문자열과 동일한 방식으로 동작합니다. 이는 heredoc에서 따옴표를 이스케이프 처리할 필요가 없지만 위의 이스케이프 시퀀스를 계속 사용할 수 있음을 의미합니다. 변수는 처리되지만 heredoc 내에서 복잡한 변수를 사용할 때는 문자열로 작업할 때만큼 주의해야 합니다.

예제 11-2. Heredoc 문자열 정의 예

$str =<<foo = "푸"; $this->bar = array("Bar1", "Bar2", "Bar3"); ) ) $foo = 새로운 foo(); $name = "내 이름"; 에코<<foo. 이제 ($foo->bar)를 출력합니다. 그러면 대문자 "A"가 출력됩니다: \x41 EOT;

참고: Heredoc 지원은 PHP 4에 추가되었습니다.

변수 처리

문자열이 큰따옴표로 정의되거나 heredoc을 사용하여 정의되면 그 안의 변수가 처리됩니다.

구문에는 단순형과 복합형의 두 가지 유형이 있습니다. 간단한 구문이 더 쉽고 편리합니다. 이를 통해 변수, 배열 값 또는 개체 속성을 처리할 수 있습니다.

복잡한 구문은 PHP 4에서 도입되었으며 표현식을 둘러싼 중괄호로 인식될 수 있습니다.

간단한 구문

인터프리터가 달러 기호($)를 발견하면 유효한 변수 이름을 형성하기 위해 가능한 한 많은 문자를 가져옵니다. 이름의 끝을 지정하려면 변수 이름을 중괄호로 묶습니다.

$beer = "하이네켄"; echo "$beer"s Taste is great"; // 작동합니다. """는 변수 이름에 유효하지 않은 문자입니다. echo "He drink some $beers"; // 작동하지 않습니다. "s"는 유효한 변수 이름입니다. echo "He drink some $(beer)s"; // 작동함 echo "그는 ($beer)를 좀 마셨어요"; // 작동

배열 요소(array)나 객체(object)의 속성도 같은 방식으로 처리할 수 있습니다. 배열 인덱스에서 닫는 대괄호(])는 인덱스 정의의 끝을 표시합니다. 객체 속성에는 단순 변수와 동일한 규칙이 적용되지만 변수처럼 속일 수는 없습니다.

// 이 예제는 특히 문자열 내부에서 배열을 사용하는 것에 대한 것입니다. 문자열 외부에서는 항상 // 배열의 문자열 키를 따옴표로 묶고 문자열 외부(괄호)를 사용하지 마십시오. // 모든 오류를 표시해 보겠습니다. error_reporting(E_ALL); $fruits = array("딸기" => "빨간색", "바나나" => "노란색"); // 작동하지만 인용된 문자열 외부에서는 다르게 작동한다는 점에 유의하세요. echo "A 바나나는 $fruits."; //작동함 echo "바나나는 ($fruits["banana"])입니다."; // 작동하지만, 아래 설명된 대로 PHP는 먼저 // 바나나 상수를 찾습니다. echo "바나나는 ($fruits)입니다."; // 작동하지 않습니다. 중괄호를 사용하세요. 이로 인해 처리 오류가 발생합니다. echo "바나나는 $fruits["banana"] 입니다."; // echo "A 바나나는 " 입니다. $fruits["바나나"] . "."; // 작동함 echo "이 사각형은 $square->width 미터 너비입니다."; // 작동하지 않습니다. 솔루션은 복잡한 구문을 참조하세요. echo "이 정사각형은 너비가 $square->width00센티미터입니다.";

더 복잡한 경우에는 복잡한 구문을 사용해야 합니다.

복잡한(곱슬) 구문

이해하기 어려워서가 아니라, 복잡한 표현을 사용할 수 있게 해주기 때문에 복잡하다고 합니다.

실제로 이 구문을 사용하면 네임스페이스에 있는 모든 값을 한 줄에 포함할 수 있습니다. 줄 바깥에서와 같은 방식으로 표현식을 작성한 다음 ( 및 )로 묶습니다. "("를 이스케이프할 수 없으므로 이 구문은 $가 ( 바로 뒤에 오는 경우에만 인식됩니다. ("($")를 이스케이프하려면 "(\$" 또는 "\($"를 사용하십시오. 몇 가지 예시:

// 모든 오류를 표시해 보겠습니다. error_reporting(E_ALL); $great = "환상적"; // 작동하지 않습니다. 다음이 출력됩니다. 이것은 ( 환상적인)입니다. echo "This는 ( $great)"; // 작동하고 다음과 같이 출력됩니다. 정말 환상적입니다. echo "This is ($great)"; echo "$(훌륭해요)"; // 작동함 echo "이 사각형의 너비는 ($square->width)00센티미터입니다."; // 작동함 echo "작동함: ($arr)"; // $foo가 라인 외부에서 유효하지 않은 것과 같은 이유로 // 이는 유효하지 않습니다. 즉, 이 방법은 여전히 ​​작동하지만 // PHP는 foo 상수를 먼저 찾기 때문에 // E_NOTICE(정의되지 않은 상수) 오류가 발생합니다. echo "잘못되었습니다: ($arr)"; // 작동합니다. 다차원 배열을 사용할 때 // 문자열 안에 항상 중괄호를 사용하십시오. echo "이것은 작동합니다: ($arr["foo"])"; // 작동합니다. echo "이것은 작동합니다: " . $arr["foo"]; echo "($obj->values->name)을 쓸 수도 있습니다."; echo "$name이라는 변수의 값입니다: ($($name))";

문자열의 문자 액세스 및 변경

문자열의 문자는 문자열 뒤의 중괄호 안에 0부터 시작하는 문자열 시작 부분의 오프셋을 지정하여 사용하고 수정할 수 있습니다.

참고: 이전 버전과의 호환성을 위해 동일한 목적으로 배열 대괄호를 사용할 수 있는 옵션이 여전히 있습니다. 그러나 PHP 4부터 이 구문은 더 이상 사용되지 않습니다.

예제 11-3. 몇 가지 예시 문자열

// 문자열의 첫 번째 문자를 가져옵니다. $str = "This is a test."; $first = $str(0); // 문자열의 세 번째 문자를 가져옵니다. $third = $str(2); // 문자열의 마지막 문자를 가져옵니다. $str = "This is still a test."; $last = $str(strlen($str)-1); // 줄의 마지막 문자 변경 $str = "Look at the sea"; $str(strlen($str)-1) = "나";

유용한 함수 및 연산자

문자열은 "." 연산자를 사용하여 연결할 수 있습니다. (점). 여기서는 추가 연산자 "+"가 작동하지 않습니다. 자세한 내용은 문자열 연산자를 참조하세요.

문자열을 수정하는 데 유용한 함수가 많이 있습니다.

주요 기능은 문자열 기능, 고급 검색 및 바꾸기를 위한 정규식 기능(두 부분: Perl 및 POSIX 고급) 섹션에 설명되어 있습니다.

URL 문자열을 위한 함수와 문자열을 암호화/해독하는 함수(mcrypt 및 mhash)도 있습니다.

마지막으로, 여전히 원하는 것을 찾지 못했다면 문자 유형 기능도 참조하세요.

문자열로 변환

캐스트(문자열) 또는 strval() 함수를 사용하여 값을 문자열로 변환할 수 있습니다. 문자열이 필요한 표현식에서는 변환이 자동으로 발생합니다. 이는 echo() 또는 print() 함수를 사용하거나 변수 값을 문자열과 비교할 때 발생합니다. 매뉴얼의 유형 및 유형 조작 섹션을 읽으면 다음 내용이 더 명확해집니다. settype()도 참조하세요.

부울 값 TRUE는 문자열 "1"로 변환되고, FALSE 값은 ""(빈 문자열)로 표시됩니다. 이러한 방식으로 부울에서 문자열로 또는 그 반대로 값을 양방향으로 변환할 수 있습니다.

정수 또는 부동 소수점은 숫자(부동 소수점 숫자의 지수 포함)로 구성된 숫자로 표시되는 문자열로 변환됩니다.

배열은 항상 "Array"라는 문자열로 변환되므로 echo() 또는 print()를 사용하여 배열의 내용을 표시하여 내용을 확인할 수 없습니다. 단일 요소를 보려면 echo $arr["foo"]와 같은 작업을 수행해야 합니다. 모든 콘텐츠를 표시/보는 방법에 대한 팁은 아래를 참조하세요.

개체는 항상 "Object" 문자열로 변환됩니다. 디버깅 목적으로 개체 멤버 변수의 값을 인쇄하려면 다음 단락을 읽으십시오. 필요한 객체의 클래스 이름을 얻으려면 get_class() 를 사용하십시오.

리소스는 항상 "Resource id #1" 구조의 문자열로 변환됩니다. 여기서 1은 런타임 시 PHP가 할당한 고유한 리소스 번호입니다. 리소스 유형을 얻으려면 을 사용하십시오.

NULL은 항상 빈 문자열로 변환됩니다.

위에서 볼 수 있듯이 배열, 개체 또는 리소스를 출력해도 값 자체에 대한 유용한 정보는 제공되지 않습니다. 디버깅을 위해 값을 인쇄하는 더 좋은 방법은 print_r() 및 var_dump() 함수를 사용하는 것입니다.

영구 저장을 위해 PHP 값을 문자열로 변환할 수도 있습니다. 이 방법을 직렬화라고 하며 serialize() 함수를 사용하여 수행할 수 있습니다. 또한 PHP 설치에 WDDX 지원이 있는 경우 PHP 값을 XML 구조로 직렬화할 수 있습니다.

문자열을 숫자로 변환

문자열이 숫자값으로 인식되면 결과 값과 유형은 다음과 같이 결정됩니다.

문자열에 ".", "e" 또는 "E" 문자가 포함되어 있으면 부동 소수점으로 인식됩니다. 그렇지 않으면 정수로 정의됩니다.

값은 문자열의 시작 부분에 따라 결정됩니다. 행이 유효한 숫자 값으로 시작하면 해당 값이 사용됩니다. 그렇지 않으면 값은 0이 됩니다. 유효한 숫자 값은 하나 이상의 숫자(소수점을 포함할 수 있음)이며 선택적으로 앞에 기호가 오고 그 뒤에 선택적 지수가 옵니다. 지수는 "e" 또는 "E" 뒤에 하나 이상의 숫자가 옵니다.

$foo = 1 + "10.5"; // $foo는 부동소수점(11.5)입니다. $foo = 1 + "-1.3e3"; // $foo는 부동소수점(-1299)입니다. $foo = 1 + "bob-1.3e3"; // $foo는 정수입니다. (1) $foo = 1 + "bob3"; // $foo는 정수입니다. (1) $foo = 1 + "10 Small Pigs"; // $foo는 정수입니다. (11) $foo = 4 + "10.2 Little Piggies"; // $foo는 부동소수점입니다(14.2) $foo = "10.0 pigs " + 1; // $foo는 float입니다. (11) $foo = "10.0 돼지 " + 1.0; // $foo는 부동 소수점입니다(11)

이 변환에 대한 자세한 내용은 Unix 설명서의 strtod(3) 섹션을 참조하세요.

이 섹션의 예제를 테스트하려면 해당 예제와 다음 줄을 복사하여 붙여넣어 어떤 일이 발생하는지 확인할 수 있습니다.

에코 "\$foo==$foo; 유형: " . gettype($foo) . "
\N";

예를 들어 C에서처럼 문자를 정수로 변환하여 문자 코드를 얻을 것이라고 기대하지 마십시오. 문자를 해당 코드로 변환하거나 그 반대로 변환하려면 ord() 및




맨 위