PHP 正則表達式匹配中文字符


例如在 MySQL 的 bin-log 文件中選取特定的數據庫語句來恢復數據時,只要選出某個庫的 INSERT INTO 操作(去掉了多余信息,只列出 SQL 語句)

INSERT INTO `crm_member` (`id`,`name`) values (1,'甄士隱')
INSERT INTO `app_member` (`id`,`name`) values (2,'dee')
INSERT INTO `crm_member` (`id`,`name`) values (3,'emperor')
INSERT INTO `crm_member` (`id`,`name`) values (4,'賈雨村')

只想選出 crm_member 表的 insert 操作時,可以使用 perg_match_all 函數

<?php

header('Content-type:text/html;charset=utf-8');

$content = "INSERT INTO `crm_member` (`id`,`name`) values (1,'甄士隱')
INSERT INTO `app_member` (`id`,`name`) values (2,'dee')
INSERT INTO `crm_member` (`id`,`name`) values (3,'emperor')
INSERT INTO `crm_member` (`id`,`name`) values (4,'賈雨村')
";

preg_match_all('/INSERT INTO `crm_member[ -~\x{4e00}-\x{9fa5}]+/u', $content, $matches);
$str = implode(";\r\n", $matches[0]);
echo $str;

瀏覽器右鍵查看源代碼查看輸出的結果:

INSERT INTO `crm_member` (`id`,`name`) values (1,'甄士隱');
INSERT INTO `crm_member` (`id`,`name`) values (3,'emperor');
INSERT INTO `crm_member` (`id`,`name`) values (4,'賈雨村')

 

說明:

模式修飾符 /u:

此修正符打開一個與perl不兼容的附加功能. 
模式字符串被認為是utf-8的.
這個修飾符 從unix版php 4.1.0或更高, win32版php 4.2.3開始可用.
php 4.3.5開始檢查模式的utf-8合法性.
This modifier turns on additional functionality of PCRE that is incompatible with Perl.
Pattern strings are treated as UTF-8.
This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32.
UTF-8 validity of the pattern is checked since PHP 4.3.5.

(參考:PHP正則表達式 /i, /s, /x,/u, /U, /A, /D, /S等模式修飾符

 

[\x{4e00}-\x{9fa5}]

代表匹配中文

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM