Php 为什么这个preg_split没有按我希望的那样工作?

Php 为什么这个preg_split没有按我希望的那样工作?,php,regex,Php,Regex,我有一个preg_分割模式,如下所示: $pattern = '/[, ;:-_.|+#\/]/'; 我用 $pcs = preg_split($pattern, $string); 如果字符串为“你好”,则count($pcs)==5 如果字符串是“你好”,那么count($pcs)==4 如果字符串是“你好”,那么count($pcs)==6 有人知道问题出在哪里吗?(我希望在所有上述情况下返回4) 我的计划是简单地将用户输入的字符串拆分为单词。 输入的字符串可能包含上述模式中的字符 谢

我有一个preg_分割模式,如下所示:

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

$pcs = preg_split($pattern, $string);
如果字符串为“你好”,则
count($pcs)==5

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

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

有人知道问题出在哪里吗?(我希望在所有上述情况下返回4)

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


谢谢

看看你的空白。我将假设如下:

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

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

看看你的空格。我将假设如下:

  • “你好”分割结果有
    $pcs[0]=''
  • “你好吗”分割结果有
    $pcs[0]='
    $pcs[5]='
由于开头和/或结尾处有空格(取决于具体情况),因此preg_分割仍将在nothing和第一个和/或最后一个单词之间创建分割。如果你想避免这种情况,你应该在分割前先运行一次。

试试看

$pcs = preg_split($pattern, $string, -1, PREG_SPLIT_NO_EMPTY);
阅读手册中的更多内容:

试试看

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

请阅读手册中的更多内容:

此解决方案很有意义,但只是为了扮演魔鬼代言人的角色。。这根绳子怎么了<代码>';'返回的不是一个空数组吗?当然,但请看OP写的“我的计划是将用户输入的字符串简单地拆分为单词。”我认为这是适合这种情况的。这个解决方案很有意义,但只是为了扮演魔鬼代言人。。这根绳子怎么了<代码>';'返回的不是一个空数组吗?当然,但是看看OP写的“我的计划是简单地将用户输入的字符串拆分为单词。”我认为这是适合这种情况的。