php에서 큰따옴표. PHP에서 작은따옴표와 큰따옴표 문자열의 차이점은 무엇입니까? PHP 이스케이프 따옴표

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

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

작은따옴표로 묶인 문자열은 PHP에서 어떤 식으로든 구문 분석되지 않습니다. 즉, 작은따옴표는 그 사이에 있는 텍스트를 있는 그대로 나타냅니다.

// 올바른 에코 "How are you?"; echo "안녕하세요? $name"; echo "안녕하세요? ".$name; // 잘못된 에코 "안녕하세요? $name";

작은따옴표와 큰따옴표로 묶인 특수 문자

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

// 잘못된 에코 "안녕하세요? \n"; // 올바른 에코 "안녕하세요? \n";

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

// 잘못된 에코 "

무슨 일이야?

"; // 올바른 에코 "

무슨 일이야?

"; 에코 "

무슨 일이야?

";

PHP의 큰따옴표

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

$query = "INSERT INTO table (post,author,text,date) VALUES ("$id","$author","$text","$date")";

문자열을 장식하는 데 어떤 종류의 따옴표를 사용해야 합니까? 아포스트로피 또는 고전적인 큰따옴표?

PHP에서 큰따옴표와 작은따옴표의 차이점을 분석하고 예제를 사용하여 언제 사용해야 하는지 알아봅시다.

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

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

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

문자열을 정의하는 가장 쉬운 방법은 문자열을 작은따옴표(")로 묶는 것입니다. 작은따옴표로 묶인 문자열 내에서 작은따옴표를 사용하려면 앞에 백슬래시 문자(\)가 와야 합니다. 즉, 이스케이프되어야 합니다. 백슬래시는 작은따옴표 앞에 오거나 문자열 끝에 와야 합니다. 다른 문자를 이스케이프하려고 하면 백슬래시도 인쇄됩니다.

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

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

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

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

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

그 차이는 매우 눈에 띕니다. 변수가 문자열에 추가되는 경우 연결 및 큰따옴표는 성능에 분명히 영향을 미칩니다.

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

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

PHP에서 문자는 바이트와 동일하므로 정확히 256개의 서로 다른 문자가 가능합니다. 이는 또한 PHP에 기본 제공 유니코드 지원이 없음을 의미합니다. 유니코드에 대한 일부 지원은 함수에서 제공됩니다. utf8_encode()그리고 utf8_decode() .

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

문자열 변수의 간단한 예:

$a= "이것은 문자열 변수에 쓰여진 텍스트일 뿐입니다.";
에코 $a; //"이것은 문자열 변수에 쓰여진 텍스트일 뿐입니다"를 출력합니다.
?>

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

문자열 유형의 구문(문자열)

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

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

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

다른 두 구문과 달리 문자열에서 발생하는 특수 문자에 대한 변수 및 이스케이프 시퀀스는 아니다처리.

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

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

에코 "또한 줄에 삽입할 수 있습니다.
이와 같은 개행 문자
괜찮으니까"
;

// 출력: 어느 날 Arnold가 "I"ll be back"이라고 말했습니다.
에코 "어느 날 Arnold가 "돌아올게"라고 말했습니다.;

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

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

// 출력: 삽입되지 않음: \n 개행
에코 "삽입되지 않습니다: \n 새 줄";

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

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

탈출 테이블:

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

다시 말하지만, 다른 문자를 기억하려면 백슬래시도 인쇄됩니다!

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

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

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

이 규칙을 위반하고 닫는 식별자가 "깨끗"하지 않으면 닫는 식별자가 없는 것으로 간주하고 PHP는 이를 계속 검색합니다. 이 경우 올바른 닫는 식별자를 찾지 못하면 스크립트 끝에 줄 번호가 있는 처리 오류가 발생합니다.

헤레독-text는 큰따옴표가 없는 문자열과 동일하게 동작합니다. 즉, heredoc에서 따옴표를 이스케이프할 필요는 없지만 위의 이스케이프 시퀀스를 계속 사용할 수 있습니다. 변수는 처리되지만 heredoc 내에서 복잡한 변수를 사용할 때는 문자열로 작업할 때와 마찬가지로 주의해야 합니다.

Heredoc 문자열 정의 예:

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

/* 변수가 있는 더 복잡한 예. */
클래스 푸
{
변수 $foo ;
변수 $bar ;

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

$foo = newfoo();
$name = "나의 이름" ;

에코<<제 이름은 "$name"입니다. $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 "안녕하세요 Mr $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가 "I"ll be back"이라고 말했습니다. echo "어느 날 Arnold가 "I\"ll be back""이라고 말했습니다. // 출력: C:\*.*를 삭제했습니까? echo "C:\\*.*를 삭제하셨습니까?"; // 출력: C:\*.*를 삭제했습니까? echo "C:\*.*를 삭제하셨나요?"; // 출력: 이것은 삽입하지 않습니다: \n a newline echo "삽입하지 않습니다: \n a newline"; // 출력: $expand 변수도 $either로 대체되지 않음 echo "$expand 변수도 $either로 대체되지 않음";

큰따옴표

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

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

다시 말하지만, 다른 문자를 기억하려면 백슬래시도 인쇄됩니다!

그러나 큰따옴표 문자열의 가장 중요한 속성은 변수 처리입니다. 자세한 내용은 문자열 처리를 참조하십시오.

헤레독

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

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

주목

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

이 규칙을 위반하고 닫는 식별자가 "깨끗"하지 않으면 닫는 식별자가 없는 것으로 간주하고 PHP는 이를 계속 검색합니다. 이 경우 올바른 닫는 식별자를 찾지 못하면 스크립트 끝에 줄 번호가 있는 처리 오류가 발생합니다.

Heredoc 텍스트는 큰따옴표가 없는 문자열과 동일하게 동작합니다. 즉, heredoc에서 따옴표를 이스케이프할 필요는 없지만 위의 이스케이프 시퀀스를 계속 사용할 수 있습니다. 변수는 처리되지만 heredoc 내에서 복잡한 변수를 사용할 때는 문자열로 작업할 때와 마찬가지로 주의해야 합니다.

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

$str =<<푸 = "푸"; $this->bar = array("바1", "바2", "바3"); ) ) $foo = 새로운 foo(); $name = "나의 이름"; 에코<<푸. 이제 ($foo->bar)를 출력합니다. 이것은 대문자 "A"를 출력해야 합니다: \x41 EOT;

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

처리 변수

문자열이 큰따옴표 또는 heredoc로 정의된 경우 그 안의 변수가 처리됩니다.

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

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

간단한 구문

인터프리터가 달러 기호($)를 만나면 가능한 한 많은 문자를 캡처하여 유효한 변수 이름을 형성합니다. 이름의 끝을 지정하려면 변수 이름을 중괄호로 묶습니다.

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

마찬가지로 배열의 요소(array) 또는 개체의 속성(object)을 처리할 수 있습니다. 배열 인덱스에서 닫는 대괄호(])는 인덱스 정의의 끝을 표시합니다. 변수와 같은 트릭은 없지만 간단한 변수와 동일한 규칙이 개체 속성에 적용됩니다.

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

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

복잡한(곱슬머리) 구문

이해하기 어렵기 때문이 아니라 복잡한 표현을 사용할 수 있기 때문에 복잡하다고 합니다.

실제로 이 구문을 사용하여 한 줄에 네임스페이스가 지정된 모든 값을 포함할 수 있습니다. 문자열 외부에서와 같은 방식으로 표현식을 작성한 다음 ( 및 )로 묶습니다. "("를 이스케이프할 수 없기 때문에 이 구문은 $ 바로 뒤에 오는 경우에만 인식됩니다. ("(\$" 또는 "\($"를 사용하여 "($") 표시)

// 모든 오류를 표시하자 error_reporting(E_ALL); $great = "환상적"; // 작동하지 않음, 출력: This is ( Fantastic) echo "This is ( $great)"; // 작동, 출력: 이것은 환상적입니다. echo "This is ($great)"; echo "이것은 $(훌륭합니다)"; // Works echo "이 정사각형의 너비는 ($square->width)00센티미터입니다."; // 작동 echo "작동: ($arr)"; // 이것은 $foo가 라인 외부에서 // 잘못된 것과 같은 이유로 잘못된 것입니다. 즉, 여전히 작동하지만 // PHP는 foo 상수를 먼저 찾기 때문에 // E_NOTICE(정의되지 않은 상수) 수준 오류가 발생합니다. echo "잘못되었습니다: ($arr)"; // 작동합니다. 다차원 배열을 사용할 때는 // 문자열 안에 항상 중괄호를 사용하십시오. echo "This works: ($arr["foo"])"; // 작동합니다. echo "작동합니다: " . $arr["푸"]; 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는 ""(빈 문자열)로 표시됩니다. 이러한 방식으로 값을 부울 유형에서 문자열 유형으로 또는 그 반대로 양방향으로 변환할 수 있습니다.

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

배열은 항상 "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" 문자가 포함된 문자열은 float로 인식됩니다. 그렇지 않으면 정수로 정의됩니다.

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

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

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

이 섹션의 예제를 테스트하려면 해당 예제와 다음 행을 복사하여 붙여넣어 결과를 확인할 수 있습니다.

Echo "\$foo==$foo; type: " . gettype($foo) . "
\N";

정수로 변환하여 문자 코드를 얻을 것으로 기대하지 마십시오(예를 들어 C에서 수행할 수 있음). 문자를 코드로 변환하거나 그 반대로 변환하려면 ord() 및




맨 위