【发布时间】:2017-04-25 11:23:18
【问题描述】:
对不起,这个模棱两可的主题,我正在寻找的是一个带有西里尔字符的字符串,可能会像
«Добрый день!» - сказал он, потянувшись…
放入一个类似的数组
[0] => «
[1] => Добрый␠
[2] => день!»␠-␠
[3] => сказал␠
[4] => он,␠
[5] => потянувшись…
所以本质上,我正在寻找在任何字符和西里尔字符([а-я] 范围)之间的边界上发生的中断,尽管只有当我们从任何字符转换为西里尔字符时这才必须是真的,而不是反之亦然。我见过用标点符号和拉丁字母成功解决这个问题的例子
preg_split('/([^.:!?]+[.:!?]+)/', 'hello:there.everyone!so.how?are:you', NULL, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
但到目前为止,我尝试将其改造成不同的东西都失败了:
preg_split ('/(?<=[^а-я])/ius', $text, NULL, PREG_SPLIT_NO_EMPTY);
几乎可以工作,但它也会被空格和标点符号等常规字符分割,这不是我想要的。显然我的正则表达式有问题。我应该如何修改它以获得如上示例中的结果?
【问题讨论】:
-
为什么
«字符被捕获为一个单独的项目,而相同的相反»被捕获为字符串день!»..的一部分? -
是的,这并不是最好的例子,我愿意以某种方式牺牲那里的 [0]。
标签: php arrays regex unicode split