You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何按空格拆分字符串且保留长度大于2字符的单词组合

解决方案

问题原因

你现有代码的问题在于preg_split的分隔符规则同时匹配了空格和vitamin [cde]片段,拆分时会将vitamin d3中的d3部分从整体中剥离,无法得到预期的完整块。

正确实现

推荐使用preg_match_all直接匹配符合要求的片段,代码如下:

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

// 可根据需求调整正则严格度,当前版本适配你的示例场景
preg_match_all('/(vitamin\s+\S+)|.+?(?=\s+vitamin|$)/', $str, $matches);
// 去除每个片段前后空格并过滤空值
$str_parts = array_filter(array_map('trim', $matches[0]));

var_export($str_parts);

输出结果

array (
  0 => 'test 1',
  1 => 'vitamin d3',
  2 => 'test 2',
)

规则说明

  • (vitamin\s+\S+) 负责匹配需要保留为整体的vitamin相关片段,若需要严格限制后面只能跟c/d/e加数字,可将这部分修改为(vitamin\s+[cde]\d*)
  • .+?(?=\s+vitamin|$) 采用惰性匹配逻辑,匹配vitamin片段之外的内容,直到遇到下一个vitamin片段或者字符串末尾
  • 最后通过trim清理前后多余空格,array_filter过滤掉空项即可得到目标数组

内容的提问来源于stack exchange,提问作者zsoro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:15:03