首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对日语字符串使用explode()

对日语字符串使用explode()
EN

Stack Overflow用户
提问于 2013-07-03 16:51:59
回答 5查看 1.6K关注 0票数 3

我不得不对日语文本使用explode()函数,但它不起作用。

下面是我所拥有的一个示例

代码语言:javascript
运行
复制
$string = '私 は イタリア 人 です';
$string = explode(" ", $string);
print_r($string);

打印出来的

代码语言:javascript
运行
复制
Array ( [0] => 私 は イタリア 人 です )

代替

代码语言:javascript
运行
复制
Array ( [0] => 私 [1] => は [2] => イタリア [3] => 人 [4] => です )

看起来explode()无法识别文本中的空格。

理由是什么呢?我怎么才能让它工作呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-07-03 16:57:11

原因很简单,这里没有空格字符。您有一个十六进制代码为"e3 80 80“的”表意空格“字符。

如果您使用它作为您的分隔符,它将工作。

票数 0
EN

Stack Overflow用户

发布于 2013-07-03 16:55:02

你用错地方了。文本使用全角空格(U+3000表意空格),而您提供的是半角空格(U+0020空格)。

票数 4
EN

Stack Overflow用户

发布于 2013-07-03 17:09:15

这里有两个问题。

首先,您没有说明您的编码是什么,但我认为所有的日语编码都是多字节的。另一方面,explode() function (像所有常规的PHP函数一样)需要单字节输入。没有确切的多字节等效项,但mb_split()可以做到这一点。

其次,您正在使用常规空格(U+0020)进行分解,但是您的字符串包含另一个字符(U+3000)。

总结一下(假设您使用的是UTF-8):

代码语言:javascript
运行
复制
<?php

mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');

$string = '私 は イタリア 人 です';
print_r(mb_split(' ', $string));

..。或者更好:

代码语言:javascript
运行
复制
<?php

mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');

$string = '私 は イタリア 人 です';
print_r(mb_split('[[:space:]]', $string));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17443605

复制
相关文章

相似问题

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