코어 포인트
PHP는 다중 바이트 변수 이름과 유니 코드 문자열을 처리 할 수 있지만 문자열을 단일 바이트 문자 시퀀스로 처리하기 때문에 언어에는 포괄적 인 유니 코드 지원이 부족합니다. 이 제한은 서브 스트링 추출, 스트링 길이 결정 및 문자열 분할을 포함하여 문자열 작동의 모든 측면에 영향을 미칩니다.
휴대용 UTF-8은 PHP 응용 프로그램에 유니 코드 지원을 제공하는 사용자 공간 라이브러리입니다. MBString 및 Iconv 위에 구축되었으며 약 60 개의 유니 코드 기반 문자열 조작, 테스트 및 검증 기능을 제공하며 UTF-8을 주 특성 인코딩 체계로 사용합니다. 라이브러리는 완전 휴대용이며 PHP 4.2 이상 설치에 사용할 수 있습니다.
휴대용 UTF-8 라이브러리는 UTF-8 입력 검증, 유효하지 않은 바이트 제거, XSS 공격을 방지하기 위해 HTML 엔티티로 텍스트를 인코딩하는 것을 포함하여 유니 코드 문자열을 처리하기위한 여러 기능을 제공합니다. 입력 문자 길이에 대한 URL 조각 및 강제 제한. 이를 통해 유니 코드 활성화 된 응용 프로그램에서 초점은 바이트 및 바이트 길이에서 문자 및 문자 길이로 이동합니다. -
PHP는 다중 바이트 변수 이름 (예 : , )을 허용하고 및 기타 확장자는 유니 코드 문자열을 처리 할 수 있으며 기능은 UTF에서 사용할 수 있습니다. 문자열을 -8과 ISO-8859-1 인코딩 사이에서 변환하십시오. 그러나 PHP에는 유니 코드 지원이 부족하다고 널리 알려져 있습니다. 이 기사에서는 유니 코드 지원 부족의 의미를 설명하고 PHP 응용 프로그램 인 휴대용 UTF -8에 유니 코드 지원을 제공하는 라이브러리를 사용하는 방법을 보여줍니다. -
php
의 유니 코드 지지대PHP의 유니 코드/다중 바이트 지원 부족은 표준 문자열 처리 기능이 문자열을 단일 바이트 문자 시퀀스로 취급한다는 것을 의미합니다. 실제로 공식 PHP 매뉴얼은 PHP의 문자열을 "일련의 문자로 정의하며 그 중 하나는 바이트와 동일합니다". PHP는 8 비트 문자 만 지원하는 반면 유니 코드 (및 다른 많은 문자 세트)는 문자를 나타내려면 여러 바이트가 필요할 수 있습니다. PHP의 이러한 제한은 문자열 발자 추출, 스트링 길이 결정, 문자열 세분화, 믹싱 등을 포함하여 (그러나 이에 국한되지는 않는) 문자열 작동의 거의 모든 측면에 영향을 미칩니다. 이 문제를 해결하려는 노력은 2005 년 초에 시작되었지만 2010 년에 기본 유니 코드 지원을 PHP에 가져 오는 작업이 중지되어 여러 가지 이유로 보류되었습니다. PHP의 기본 유니 코드 지원은 구현하는 데 몇 년이 걸릴 수 있으므로 (그렇다면) 개발자는이 간격을 메우기 위해 및 mbstring와 같은 사용 가능한 확장에 의존해야하지만 이러한 확장은 제한된 유니 코드 지원 만 제공합니다. 이 라이브러리는 유니 코드 중심이 아니며 비공개 인코딩 사이에서도 변환 할 수 있습니다. 그들은 유니 코드 문자열 처리를 단순화하는 데 긍정적 인 기여를합니다. 그러나 위의 확장에는 몇 가지 단점이 있습니다. 그들은 제한된 유니 코드 문자열 처리 기능 만 제공하며 기본적으로 활성화되지 않습니다. 서버 관리자는 PHP 응용 프로그램을 통해 모든 또는 모든 확장에 액세스 할 수 있도록 명시 적으로 활성화해야합니다. 공유 호스팅 제공 업체는 종종 하나 또는 두 개의 확장을 설치하여 상황을 악화시켜 개발자가 항상 사용할 수있는 API에 의존하여 유니 코드 요구를 충족시키기가 어렵습니다. 그럼에도 불구하고 좋은 소식은 PHP가 유니 코드 텍스트를 출력 할 수 있다는 것입니다. PHP는 ASCII로 인코딩 된 영어 텍스트를 보내거나 문자가 여러 바이트로 인코딩 된 언어에 속하는 다른 텍스트를 보내는 지 실제로 신경 쓰지 않기 때문입니다. 이를 알기 위해 PHP 개발자는 이제 편안한 유니 코드 기반 문자열 조작을 제공하는 API 만 필요합니다. iconv
휴대용 UTF-8
최근 솔루션은 PHP로 작성된 사용자 공간 라이브러리를 만드는 것입니다. 서버/언어 수준에 지원이 부족하더라도 이러한 라이브러리는 유니 코드 지원의 존재를 보장하기 위해 애플리케이션과 쉽게 묶을 수 있습니다. 많은 오픈 소스 애플리케이션에는 이미 이런 종류의 라이브러리가 포함되어 있으며, 더 많은 무료 타사 라이브러리는 휴대용 UTF-8입니다. 휴대용 UTF-8은 및 위에 내장 된 무료 경량 라이브러리입니다. 이 두 확장의 기능을 확장하여 약 60 개의 유니 코드 기반 문자열 조작, 테스트 및 검증 기능을 제공합니다. 이름에서 알 수 있듯이 휴대용 UTF-8은 UTF-8을 기본 문자 인코딩 체계로 사용합니다. 라이브러리는 속도 이유를 위해 사용 가능한 확장 (
및 )을 사용하고 직접 사용할 때 불일치를 연결하지만 서버에 이러한 확장 기능이 없으면 순수한 PHP를 사용하는 것으로 돌아갑니다. . 휴대용 -UT8은 완전 휴대용이며 PHP 4.2 이상 설치에 사용할 수 있습니다. mbstring
iconv
휴대용 UTF-8 mbstring iconv
를 사용한 스탠드 처리 유니 코드 지원이 좋지 않은 텍스트 편집기는 텍스트를 읽을 때 텍스트를 손상시킬 수 있으며, 텍스트는 해당 편집기의 웹 양식으로 복사하고 붙여진 텍스트가 응용 프로그램의 유효하지 않은 UTF-8의 출처 일 수 있습니다. 사용자 제출 입력을 처리 할 때 입력이 응용 프로그램의 기대와 정확히 일치하는지 확인하십시오. 텍스트가 유효한 UTF-8인지 여부를 감지하려면 라이브러리의 함수를 사용할 수 있습니다. is_utf8()
유효하지 않은 바이트에서 문자를 복구하는 것은 불가능하므로 유효한 UTF-8 문자로 인식되지 않는 바이트를 제거하는 것이 유일한 선택 일 수 있습니다. 함수는 유효하지 않은 바이트를 제거하는 데 사용될 수 있습니다. if (is_utf8($_POST['title'])) {
// 执行某些操作...
}
로그인 후 복사
각 유니 코드 문자는 해당 HTML 엔티티로 인코딩 될 수 있으며, 브라우저에 출력하기 전에 XSS 공격을 방지하기 위해 이러한 방식으로 텍스트를 인코딩 할 수 있습니다. utf8_clean()
일반적으로, 공백은 문자열의 시작과 끝에서 트림됩니다. 유니 코드는 약 20 개의 공간 문자를 나열하며 일부 ASCII 기반 제어 문자는 가지 치기 해야하는 객체로 간주되어야합니다. $title = utf8_clean($_POST['title']);
로그인 후 복사
반면에 그러한 공간의 복제는 문자열의 중간에 존재할 수 있으며 삭제해야합니다. 다음은
및 <🎜 🎜>를 조합하여 사용하는 방법을 보여줍니다.
echo utf8_html_encode($title);
로그인 후 복사
SEO 목적으로 URL 조각을 생성하기위한 기존 솔루션은 음역을 사용하고 조각에서 모든 비 ASCII 문자를 제거합니다. 이것은 URL보다 덜 가치가 있습니다. URL은 이러한 제거 또는 음역없이 UTF-8 인코딩 된 문자를 지원할 수 있지만 모든 언어로 문자를 포함하는 풍부한 스 니펫을 만들 수 있습니다.
입력 검증 시작부터 데이터 저장 데이터베이스에 데이터베이스에 대한 유니 코드 가성 응용 프로그램은 바이트 및 바이트 길이가 아닌 문자 및 문자 길이에 중점을 둡니다. 이러한 초점 전환에는이 차이를 이해하기 위해 새로운 인터페이스가 필요합니다. 일반적으로 입력 문자의 길이를 제한해야하므로 입력의 길이가 60 자 이상 인 경우 서브 스트링을 생성합니다.
$title = utf8_trim($title);
로그인 후 복사
또는 : <🎜 🎜>
utf8_remove_duplicates()
휴대용 -UT8 라이브러리를 사용하여 단일 문자에 액세스하는 세 가지 방법이 있습니다. 우리는 utf8_ws()
를 사용하여 단일 문자에 액세스 할 수 있습니다.
$title = utf8_remove_duplicates($title, utf8_ws());
로그인 후 복사
<<> 콜백 함수를 사용하여 단일 문자에 반복 액세스 할 수 있습니다.
$slug = utf8_url_slug($title, 30); // 字符长度30
로그인 후 복사
우리는 <🎜 🎜>를 사용하여 문자열을 문자 배열로 분할하고 배열 요소를 단일 문자로 처리 할 수 있습니다.
훈련 유니 코드는 문자열의 최소/최대 코드 포인트, 문자열, 프로세스 바이트 주문 마커, 문자열 케이스 변환, 무작위 화/믹싱, 교체 등을 찾아야 할 수도 있습니다. 이 모든 것은 휴대용 -UT8에 의해 지원됩니다. if (utf8_strlen($title) > 60) {
$title = utf8_substr($title, 0, 60);
}
로그인 후 복사
<🎜 🎜> <<> 결론
PHP 6 개발이 중단되어 기본 유니 코드 지원에 대한 장기적인 필요성이 지연되어 다국어 응용 프로그램의 개발에 중요합니다. 따라서 서버 측 확장자 및 휴대용 UTF-8과 같은 사용자 공간 라이브러리는 개발자가 지역 요구를 충족시키기 위해 더 나은 표준화 된 웹을 만들도록 돕는 데 중요한 역할을합니다. if (!utf8_fits_inside($title , 60)) {
$title = utf8_substr($title, 0 ,60);
}
로그인 후 복사
(공간 제한으로 인해 FAQ 부품이 여기에서 생략 됨)
위 내용은 휴대용 UTF-8을 사용하여 PHP에 유니 코드를 가져옵니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!