>백엔드 개발 >PHP 튜토리얼 >PHP에서 정규식을 사용하여 중국어 문자를 일치시키는 방법

PHP에서 정규식을 사용하여 중국어 문자를 일치시키는 방법

王林
王林원래의
2023-06-22 09:16:393688검색

PHP에서 정규 표현식은 일반적으로 사용되는 문자열 일치 도구로 문자열이 특정 형식을 준수하는지 확인하여 입력 값의 유효성을 확인하는 데 사용할 수 있습니다. 한자를 처리할 때 한자와 영어의 인코딩이 다르기 때문에 정규식의 매칭규칙을 이에 맞게 조정해야 한다. 이 기사에서는 정규식을 사용하여 PHP에서 중국어 문자를 일치시키는 방법을 소개합니다.

1. 중국어 문자 인코딩 이해하기

PHP에서 일반적으로 사용되는 문자 인코딩은 UTF-8과 GBK입니다. UTF-8은 "가변 길이 인코딩"입니다. 즉, 문자마다 길이가 다르며 1~4바이트를 사용하여 서로 다른 문자를 나타냅니다. GBK는 각 문자가 2바이트로 표시되는 "고정 길이 인코딩"입니다.

복잡한 UTF-8 인코딩 규칙으로 인해 한자를 일치시킬 때 GBK 인코딩을 사용하여 일치시킬 수 있습니다. PHP에서는 mb_convert_encoding() 함수를 사용하여 문자열을 UTF-8에서 GBK 인코딩으로 변환할 수 있습니다. 예:

$str = "中文";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");

2. 한자 일치

  1. 단일 한자 일치

단일 중국어 일치 문자인 경우 [x{4e00}-x{9fa5}]에 정규식을 사용할 수 있습니다. 여기서 x는 16진수 문자를 나타내고, {4e00}과 {9fa5}는 중국어 문자 집합의 첫 번째 문자와 마지막 문자, 즉 각각 "一"과 "饥"를 나타냅니다.

코드 예:

$str = "中文";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match("/[x{4e00}-x{9fa5}]/u", $str_gbk, $match);
echo $match[0];

출력 결과는 다음과 같습니다.

  1. 여러 중국어 문자 일치

여러 중국어 문자를 일치시키려면 정규 표현식에 수량자를 추가할 수 있습니다(예: 원하는 수의 중국어 문자와 일치하도록 *). +는 적어도 하나의 한자와 일치한다는 의미이고, {n,m}은 n~m개의 한자가 일치한다는 의미입니다.

코드 예:

$str = "中文编程真有意思";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match("/[x{4e00}-x{9fa5}]{2,}/u", $str_gbk, $match);
echo $match[0];

출력 결과는 다음과 같습니다.

中文编程真有意思
  1. 한자와 기타 문자 일치

문자열에서 한자와 기타 문자를 동시에 일치시키려면 [x{4e00}-를 사용할 수 있습니다. x{9fa5 }] 및 [w](모든 문자 또는 숫자와 일치)는 문자열과 일치합니다. 예:

코드 예:

$str = "中文AI编程真有意思123";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match("/[x{4e00}-x{9fa5}w]+/u", $str_gbk, $match);
echo $match[0];

출력 결과는 다음과 같습니다.

中文AI编程真有意思123

3. 일반적으로 사용되는 정규식 함수

  1. preg_match ()

preg_match() 함수는 문자열에 대해 정규식 일치를 수행하고 일치 결과 또는 FALSE를 반환하는 데 사용됩니다.

구문: ​​preg_match(string $pattern, string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0]]])

샘플 코드:

$str = "中文编程真有意思";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match("/[x{4e00}-x{9fa5}]+/u", $str_gbk, $match);
echo $match[0];

출력 결과는 다음과 같습니다.

中文编程真有意思
  1. preg_match_all()

preg_match_all() 함수는 문자열의 정규 표현식과 일치하는 모든 일치 결과를 찾고 일치하는 모든 결과로 구성된 배열을 반환하는 데 사용됩니다.

구문: ​​preg_match_all(string $pattern, string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0]]])

샘플 코드:

$str = "PHP是一门非常有用的编程语言,可以用来开发各种Web应用";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str_gbk, $match);
print_r($match[0]);

출력 결과는 다음과 같습니다.

Array
(
    [0] => PHP是一门非常有用的编程语言
    [1] => 可以用来开发各种Web应用
)
  1. preg_replace()

preg_replace() 함수는 정규 표현식을 사용하여 문자열을 검색하고 바꾸는 데 사용됩니다.

구문: ​​preg_replace(mixed $pattern, Mixed $replacement, Mixed $subject [, int $limit = -1 [, int &$count]])

샘플 코드:

$str = "我爱编程,编程使我快乐!";
$str_gbk = mb_convert_encoding($str, "GBK", "UTF-8");
$new_str_gbk = preg_replace("/[x{4e00}-x{9fa5}]+/", "", $str_gbk);
$new_str = mb_convert_encoding($new_str_gbk, "UTF-8", "GBK");
echo $new_str;

출력 결과는 다음과 같습니다.

,使我快乐!

넷, 요약

위는 PHP에서 정규식을 사용하여 한자를 일치시키는 방법입니다. 정규식을 사용하면 입력 값의 유효성을 확인할 수 있습니다. 사용시 한자의 인코딩 방식에 주의해야 하며, 필요에 따라 해당 정규식 기능을 선택하여 사용해야 합니다.

위 내용은 PHP에서 정규식을 사용하여 중국어 문자를 일치시키는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.