Home > Backend Development > PHP Tutorial > Using regular expressions to extract Chinese implementation notes in PHP_PHP tutorial

Using regular expressions to extract Chinese implementation notes in PHP_PHP tutorial

WBOY
Release: 2016-07-13 10:01:38
Original
935 people have browsed it

Using regular expressions to extract Chinese implementation notes in PHP

This article mainly introduces the use of regular expressions to extract Chinese implementation notes in PHP. This article also explains Korean and Japanese Regular expressions, and also gives implementation code and usage examples. Friends in need can refer to it

Recently, my boss called me a small exercise in data duplication checking, which involves extracting and storing the Chinese fields from a file containing Chinese fields, and developing it using PHP. The middle involves the problem of Chinese matching of PHP regular expressions. I searched a lot on the Internet, but it was also very confusing and there was no accurate information. After modifying and testing my own code, I first wrote down the extract function.

The first thing to note is the encoding problem of double-byte characters. Here we may also encounter encoding problems such as Korean and Japanese in the future, which means the same thing as Chinese.

1. GBK (GB2312/GB18030)

The code is as follows:


x00-xff GBK double-byte encoding range
x20-x7f ASCII
xa1-xff Chinese gb2312
x80-xff Chinese gbk
2. UTF-8 (Unicode)

The code is as follows:


u4e00-u9fa5 (Chinese)
x3130-x318F (Korean
xAC00-xD7A3 (Korean)
u0800-u4e00 (Japanese)

Under Notepad, we can first test whether our regular writing is wrong. I used [u4e00-u9fa5] to test the first expression. The symbol indicates more than one

PHP中使用正则表达式提取中文实现笔记   帮客之家

matching character. The result is the same as expected. So, can this regular rule be used in scripts?

Let’s test it. We use preg_match_all('/[u4e00-u9fa5] /', $subject,$matches) to call, and then you see this result: Compilation failed: PCRE does not support L, l, N {name}, U, or u at offset 2. . . . Isn’t it very big? ? What is the reason for this?

After consulting a lot of information, I found that u (PCRE_UTF8) is the PCRE above. This is a Perl library, including a perl-compatible regular expression library. This modifier enables an additional feature in PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available since PHP 4.1.0 under Unix and since PHP 4.2.3 under win32. PHP regular expressions also have different ways of expressing hexadecimal data. In PHP, x is used to represent hexadecimal data. Next, we will optimize the code and the detection function becomes:

The code is as follows:

class storeDataAdapter extends Store{
private $dsData;
/**
* Data conversion function, call preg_match_all to perform numerical matching based on $pattern regularity, and store the returned results in $matches in the form of an array,
* $matches[0] will contain text that matches the entire pattern, $matches[1] will contain text that matches the subpattern in the first captured bracket, and so on
* @see Store::data_convert()
*/
public function data_convert($pattern,$subject) {
$matches=array();
if (preg_match_all($pattern, $subject,$matches)){
return $matches[0];
}else
{
return null;
}
}
}

When

is called, it becomes:

The code is as follows:


$store=new storeDataAdapter($txtContent);
$match=array();
$dsName=$store->data_convert(‘/[x7f-xff] /’,$txtContent);
foreach ($dsName as $val){
echo $val."
";
}

The input file is:

, the following is the output file content after extracting Chinese:

, in line with expected needs.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/971941.htmlTechArticleUsing regular expressions to extract Chinese in PHP implementation notes This article mainly introduces the use of regular expressions to extract Chinese in PHP Implementation notes, this article also explains regular expressions in Korean and Japanese...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template