首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中拆分汉字?

如何在PHP中拆分汉字?
EN

Stack Overflow用户
提问于 2010-11-06 23:46:21
回答 3查看 5.3K关注 0票数 2

我需要一些关于如何在PHP中拆分混合了英文单词和数字的中文字符的帮助。

例如,如果我读到

代码语言:javascript
复制
FrontPage 2000中文版應用大全

我希望能得到

代码语言:javascript
复制
FrontPage, 2000, 中,文,版,應,用,大,全

代码语言:javascript
复制
FrontPage, 2,0,0,0, 中,文,版,應,用,大,全

我如何才能做到这一点?

提前感谢:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-07 00:09:12

假设您正在使用UTF-8 (或者您可以使用图标或其他工具将其转换为UTF-8 ),然后使用u修饰符(文档:http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php )

代码语言:javascript
复制
<?
    $s = "FrontPage 2000中文版應用大全";
    print_r(preg_match_all('/./u', $s, $matches));
    echo "\n";
    print_r($matches);
?>

将会给予

代码语言:javascript
复制
21
Array
(
    [0] => Array
        (
            [0] => F
            [1] => r
            [2] => o
            [3] => n
            [4] => t
            [5] => P
            [6] => a
            [7] => g
            [8] => e
            [9] =>  
            [10] => 2
            [11] => 0
            [12] => 0
            [13] => 0
            [14] => 中
            [15] => 文
            [16] => 版
            [17] => 應
            [18] => 用
            [19] => 大
            [20] => 全
        )

)

请注意,我的源代码也存储在一个以UTF-8编码的文件中,以便$s包含这些字符。

以下字符将与字母数字作为一个组进行匹配:

代码语言:javascript
复制
<?
$s = "FrontPage 2000中文版應用大全";
print_r(preg_match_all('/(\w+)|(.)/u', $s, $matches));
echo "\n";
print_r($matches[0]);
?>

结果:

代码语言:javascript
复制
10
Array
(
    [0] => FrontPage
    [1] =>  
    [2] => 2000
    [3] => 中
    [4] => 文
    [5] => 版
    [6] => 應
    [7] => 用
    [8] => 大
    [9] => 全
)
票数 11
EN

Stack Overflow用户

发布于 2017-05-10 09:58:43

代码语言:javascript
复制
    /**
     * Reference: http://www.regular-expressions.info/unicode.html
     * Korean: Hangul
     * CJK: Han
     * Japanese: Hiragana, Katakana
     * Flag u required
     */

    preg_match_all(
        '/\p{Hangul}|\p{Hiragana}|\p{Han}|\p{Katakana}|(\p{Latin}+)|(\p{Cyrillic}+)/u',
        $str,
        $result
    );

如果你使用的也是PHP7.0,这个也可以用。

这个不起作用。我很抱歉我支持了一个不可行的解决方案...

代码语言:javascript
复制
<?
    $s = "FrontPage 2000中文版應用大全";
    print_r(preg_match_all('/(\w+)|(.)/u', $s, $matches));
    echo "\n";
    print_r($matches[0]);
?>
票数 3
EN

Stack Overflow用户

发布于 2012-02-29 05:24:45

使用此代码,您可以使中文文本(utf8)在行尾换行,以使其仍然可读

代码语言:javascript
复制
print_r(preg_match_all('/([\w]+)|(.)/u', $str, $matches));
$arr_result = array();

foreach ($matches[0] as $key => $val) {
    $arr_result[]=$val;
    $arr_result[]="&#8203;"; //add Zero-Width Space
} 
foreach ($arr_result as $key => $val) {
    $out .= $val;
} 
return $out;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4113802

复制
相关文章

相似问题

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