> 백엔드 개발 > PHP 문제 > PHP 문자열은 무엇으로 구성됩니까?

PHP 문자열은 무엇으로 구성됩니까?

藏色散人
풀어 주다: 2023-03-17 21:40:01
원래의
3315명이 탐색했습니다.

php 문자열은 일련의 문자로 구성되며, 각 문자는 1바이트에 해당합니다. 즉, PHP는 256개의 문자 세트만 지원할 수 있으므로 유니코드는 PHP에서 문자열 구현을 지원하지 않습니다. 버퍼 길이를 지정하는 정수입니다.

PHP 문자열은 무엇으로 구성됩니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, PHP 버전 8.1, DELL G3 컴퓨터

PHP 문자열은 무엇으로 구성되나요?

문자열은 일련의 문자로 구성되며 각 문자는 1바이트에 해당합니다. 즉, PHP는 256개의 문자 집합만 지원할 수 있으므로 유니코드는 지원하지 않습니다.

문자열 유형에 대한 자세한 설명

PHP에서 문자열의 구현은 바이트 배열과 버퍼 길이를 나타내는 정수로 구성됩니다. 바이트를 문자로 변환하는 방법에 대한 정보는 없으며 결정하는 것은 프로그래머의 몫입니다. 특히 문자열이 어떤 값으로 구성되는지에 대한 제한은 없습니다. 값이 0인 바이트("NUL 바이트")는 문자열의 어느 곳에나 있을 수 있습니다(이 매뉴얼에서는 이진이 아닌 것으로 언급되는 여러 함수가 있지만). "안전", NUL 바이트 이후의 모든 데이터를 무시할 수 있음).

문자열 유형의 이 기능은 PHP에 별도의 "바이트" 유형이 없는 이유를 설명합니다. 대신 문자열이 사용되었습니다. 네트워크 소켓에서 읽은 임의의 데이터와 같이 텍스트가 아닌 값을 반환하는 함수는 여전히 문자열을 반환합니다.

PHP는 문자열 인코딩을 지정하지 않으므로 문자열은 어떻게 인코딩되나요? 예를 들어 문자열 "á"는 "xE1"(ISO-8859-1), "xC3xA1"(UTF-8, C 형식), "x61xCCx81"(UTF-8, D 형식) 또는 기타 가능한 표현식과 동일합니까? ? 대답은 문자열이 스크립트 파일과 동일한 인코딩으로 인코딩된다는 것입니다. 따라서 스크립트가 ISO-8859-1로 인코딩되면 그 안의 문자열도 ISO-8859-1로 인코딩됩니다. 그러나 Zend Multibyte가 활성화된 경우에는 적용되지 않습니다. 이 경우 스크립트는 어떤 방식으로든(명시적으로 지정되거나 자동으로 감지됨) 인코딩된 다음 일부 내부 인코딩으로 변환될 수 있으며 문자열은 이러한 방식으로 인코딩됩니다. 스크립트 인코딩(또는 Zend Multibyte가 활성화된 경우 내부 인코딩)에는 몇 가지 제약이 있습니다. 이는 이 인코딩이 UTF-8 또는 ISO-8859-1과 같은 호환 가능한 ASCII 상위 집합이어야 함을 의미합니다. 그러나 초기 문자와 초기 문자가 아닌 문자 모두에 동일한 바이트 값을 사용할 수 있는 상태 종속 인코딩은 상태를 전환할 때 문제를 일으킬 수 있습니다.

물론, 텍스트에 대해 작동하는 함수가 유용하려면 문자열이 인코딩되는 방식에 대해 가정해야 합니다. 불행하게도 이를 위한 PHP 함수에는 다양한 변형이 있습니다.

  • 일부 함수는 문자열이 단일 바이트로 인코딩된다고 가정하지만 바이트를 특정 문자로 해석할 필요는 없습니다. 예를 들어 substr(), strpos(), strlen() 및 strcmp()입니다. 이러한 함수에 대해 생각하는 또 다른 방법은 메모리 버퍼, 즉 바이트 및 바이트 첨자 측면에서 작동한다는 것입니다.

  • 일부 함수에는 문자열의 인코딩 방법이 전달되며, 기본적으로 이 정보를 사용할 수 없다고 가정할 수도 있습니다. 예에는 htmlentities() 및 mbstring 확장의 대부분의 함수가 포함됩니다.

  • 다른 함수는 현재 로케일(setlocale() 참조)을 사용하지만 바이트 단위로 작동합니다.

  • 마지막으로 일부 함수는 문자열이 특정 인코딩, 일반적으로 UTF-8이라고 가정합니다. 이는 intl 확장 및 PCRE(위 예에서는 u 수정자가 사용된 경우에만) 확장의 대부분의 함수에 해당됩니다.

마지막으로 유니코드를 올바르게 사용하는 프로그램을 작성하려면 데이터를 손상시킬 수 있는 기능을 피하도록 주의해야 합니다. intl 및 mbstring 확장의 기능을 사용합니다. 그러나 유니코드 인코딩을 처리하는 함수를 사용하는 것은 시작에 불과합니다. 어떤 언어에서 제공하는 기능이 무엇이든 가장 기본적인 것은 유니코드 명세를 이해하는 것입니다. 예를 들어, 대문자와 소문자만 가정하는 프로그램은 완전히 잘못된 것입니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP 문자열은 무엇으로 구성됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿