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


Why is this preg_split not working as I want it to?

preg_split模式如下:

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

我使用

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

如果字符串是" Hello how are you",则表示count($pcs) == 5 .
如果字符串是"Hello how are you",那么count($pcs) == 4
如果字符串是" Hello how are you ",那么count($pcs) == 6 .

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

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

谢谢

Try

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

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

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

  • "Hello how are you"拆分结果有$pcs[0] == ''
  • "Hello how are you"拆分结果有$pcs[0] == ''$pcs[5] == ''

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