首页 > 解决方案 > 如果单词长于 2 个字符,则在空格上拆分字符串

问题描述

如果单词长于 2 个字符,我很难找到在空格上拆分字符串的确切公式。

$str = 'test 1 vitamin d3 test 2';

$str_parts = preg_split('#(?:\s+|(vitamin [cde]))#', $str, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);

var_export($str_parts);

理想的输出是:

['test 1', 'vitamin d3', 'test 2']

标签: phpregex

解决方案


您可以在以下位置使用此正则表达式split

\h+(?=\w{3})

如果后面有一个至少包含 3 个字符的单词使用正向前瞻,则匹配 1+ 个空格。

正则表达式演示

代码:

$str = 'test 1 vitamin d3 test 2';
$str_parts = preg_split('/\h+(?=\w{3})/', $str);
print_r($str_parts);

输出:

Array
(
    [0] => test 1
    [1] => vitamin d3
    [2] => test 2
)

推荐阅读