我有一个preg_split模式如下:
$pattern = '/[, ;:-_.|+#\/]/';
我用
$pcs = preg_split($pattern, $string);
如果字符串是“Hello你好”,那么count($pcs) == 5
如果字符串是“Hello你好”,那么count($pcs) == 4
如果字符串是“Hello你好”,那么count($pcs) == 6
。
有人知道问题是什么吗? (我想让它在以上所有情况下都返回4)。
我的计划是简单地将用户输入的字符串拆分为单词。 输入的字符串可能包含上图中的字符。
由于
答案 0 :(得分:4)
尝试
$pcs = preg_split($pattern, $string, -1, PREG_SPLIT_NO_EMPTY);
答案 1 :(得分:1)
看看你的空白。我将假设以下内容:
$pcs[0] == ''
$pcs[0] == ''
和$pcs[5] == ''
由于在开头和/或结尾有空格(取决于具体情况),preg_split仍然会在空格和第一个和/或最后一个单词之间创建分割。如果你想避免这种情况,你应该在分裂前先运行trim()。