首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php正则表达式按字符拆分中文文本

php正则表达式按字符拆分中文文本
EN

Stack Overflow用户
提问于 2015-02-14 17:36:22
回答 1查看 286关注 0票数 1

例如,客户端请求的字符串如下:

代码语言:javascript
复制
我学习中国的语言, 国的语言.

我想得到一个字符数组,包括空格、逗号、点等等,所以基本上我需要按字符细分如下:

代码语言:javascript
复制
$characters = [
    "我", "学", "习", "中", "国", "的", "语", "言", ",", " ", "国", "的","语","言"
]

我想我需要使用一些多字节函数,因为汉字可以占用3个或更多字节。我能用什么regexp表达式来得到那个数组?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-14 17:39:15

使用preg_match_all

代码语言:javascript
复制
preg_match_all('~.~u', $str, $match);

.匹配任何字符,但不匹配换行符。但是当使用. DOTALL修饰符时,相同的s将匹配任何字符甚至换行。由于输入包含Unicode字符,所以必须启用u修饰符。

通过preg_split

代码语言:javascript
复制
$str = "我学习中国的语言, 国的语言.";
$split = preg_split('~(?<=.)(?=.)~u', $str);
print_r($split);

示例:

代码语言:javascript
复制
$str = "我学习中国的语言, 国的语言.";
preg_match_all('~.~u', $str, $match);
print_r($match);

输出:

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [0] => 我
            [1] => 学
            [2] => 习
            [3] => 中
            [4] => 国
            [5] => 的
            [6] => 语
            [7] => 言
            [8] => ,
            [9] =>  
            [10] => 国
            [11] => 的
            [12] => 语
            [13] => 言
            [14] => .
        )

)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28518277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档