0

这是一个中文字符串示例:

"最初 , 上帝 创造 了 天地 。 2 大地 混沌 苍茫 , 深渊 的 表面 一 片 黑暗 。 "

如何将其拆分为如下所示的数组?:

Array
(
    [0] => 最初 , 上帝 创造 了 天地 。 2 大地 混沌 苍茫 , 深渊 的 表面 一 片 黑暗 。
    [1] => 2 大地 混沌 苍茫 , 深渊 的 表面 一 片 黑暗 。 
)

我尝试过但失败了:

$array = mb_split('。', $string);
echo "<pre>";
print_r($array);

我明白了:

Array
(
    [0] => 最初 , 上帝 创造 了 天地 。 2 大地 混沌 苍茫 , 深渊 的 表面 一 片 黑暗 。
)

ps 字符集为 GB18030。

我找到了更多信息。中国时期称为句号。html 转义是&#12290;&#x3002;。GB18030 十六进制字节为 a1a3。Unicode 字符是 'IDEOGRAPHIC FULL STOP' (U+3002)。我如何使用其中任何一个来实现我的目标?

4

4 回答 4

0

尝试这个:

$array = explode(chr(227), $string);

更新:

修复 的字符explode

foreach($array as $part) {
    echo str_replace(array(chr(128).chr(130)), '', $part);
    echo '<br>';
}
于 2012-11-14T21:11:38.190 回答
0

我需要在 gb18030 中执行此操作的原因是,我使用的库 (dedesplit) 在转换为 utf-8 时将无法工作。该库是一个中文分词器。我联系了开发人员,他告诉我有一个可以在 utf-8 ( http://www.itgrass.com/phpanalysis/index.html ) 中工作的新版本。我已经对其进行了测试,它正确地分解了以中文句点(或“句号”)作为分隔符的段落。

ps 在找到这个新库之前,我决定编写自己的explode 函数。我认为这可能有效,但我进行了零测试。

于 2012-11-15T12:47:57.137 回答
0

你试试怎么样

$array = explode('。', $string);

这对我使用命令行很有用。

输出: Array ( [0] => 最初,上帝创造了天 [1] => 2 大地混沌地苍茫,深渊的表面一片黑暗 [2] =>
)

于 2012-11-14T21:34:01.647 回答
0

最好的是preg_split()使用/u(UTF8) 选项,例如:

 $s = "日、に、本、ほん、語、ご";
 $v1 = preg_split('/(?<!^)(?!$)/u', $s); // for multibyte str_split($list)
 // same as $v1=preg_split('//u', $s);array_pop($v1);array_shift($v1);
 $v2 = preg_split('/、/u', $s); // for multibyte explode("、&quot;,$list)

结果是

  • v1 = array(12) { [0]=> string(3) "日" [1]=> string(3) "、" [2]=> 字符串(3) "に" [3]=> 字符串(3) "、" ... [11]=> 字符串(3)“ご” }

  • v2 = array(6) { [0]=> string(3) "日" [1]=> string(3) "に"; [2]=> string(3) "本" [3]=> string(6) "ほん" [4]=> string(3) "语"; [5]=> 字符串(3) "ご" }


与您的示例一起使用,

$s = "最初 , 上帝 创造 了 天地 。 2 大地 混沌 苍茫 , 深渊 的 表面 一 片 黑暗 。 ";
$array  = preg_split('/。/u',$s);
var_dump($array);

结果

array(3) { [0]=> string(36) "最初 , 上帝 创造 了 天地 " 
           [1]=> string(61) " 2 大地 混沌 苍茫 , 深渊 的 表面 一 片 黑暗 " 
           [2]=> string(1) " " 
} 

所以,并不完美......但作为常规表达,您可以根据自己的需要调整它:

确切的解决方案

$array  = preg_split('/。(?!\s*$)/u',$string);

现在,消极地展望未来,这正是您所需要的(!)。

array(3) { [0]=> string(36) "最初 , 上帝 创造 了 天地 " 
           [1]=> string(61) " 2 大地 混沌 苍茫 , 深渊 的 表面 一 片 黑暗 。 " 
} 
于 2014-10-12T17:58:48.533 回答