为什么这个preg_split不能像我想要的那样工作?

时间:2011-10-11 20:20:34

标签: php regex

我有一个preg_split模式如下:

$pattern = '/[, ;:-_.|+#\/]/';

我用

$pcs = preg_split($pattern, $string);

如果字符串是“Hello你好”,那么count($pcs) == 5 如果字符串是“Hello你好”,那么count($pcs) == 4 如果字符串是“Hello你好”,那么count($pcs) == 6

有人知道问题是什么吗? (我想让它在以上所有情况下都返回4)。

我的计划是简单地将用户输入的字符串拆分为单词。 输入的字符串可能包含上图中的字符。

由于

2 个答案:

答案 0 :(得分:4)

尝试

$pcs = preg_split($pattern, $string, -1, PREG_SPLIT_NO_EMPTY);

阅读手册中的更多内容:http://php.net/manual/en/function.preg-split.php

答案 1 :(得分:1)

看看你的空白。我将假设以下内容:

  • “你好,你好”,分割结果有$pcs[0] == ''
  • “你好,你好吗”分割结果有$pcs[0] == ''$pcs[5] == ''

由于在开头和/或结尾有空格(取决于具体情况),preg_split仍然会在空格和第一个和/或最后一个单词之间创建分割。如果你想避免这种情况,你应该在分裂前先运行trim()

相关问题