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
WBOYOriginal
2016-07-13 10:09:21839browse

Using regular expressions to extract Chinese implementation notes in PHP,

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)

Copy code 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)
Copy code 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 or not. I used [u4e00-u9fa5]+ to test the first expression. The + sign indicates more than one

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 extra 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:

Copy code 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];                                                                                                                                                                                                                                                 return null;                                                                                                                                                                                                               }  


When
is called, it becomes:




Copy code
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/945718.htmlTechArticleUsing regular expressions to extract Chinese implementation notes in PHP. Recently, my boss called me a small exercise in data duplication checking, which involves... Extract the Chinese fields from a file containing Chinese fields and...
Statement:
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