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

PHP如何按两个分隔符拆分文本并保留分隔符属性和原有顺序

PHP 双分隔符文本拆分实现方案

实现思路

  • 你之前用explode()的方式只能按单一分隔符拆分,会丢失分隔符和内容的对应关系,也无法保留两种分隔符交叉出现的原始顺序
  • 推荐使用正则表达式的捕获分组能力,一次性匹配所有分隔符及其对应的内容,匹配结果的顺序和原文顺序完全一致
  • 所用正则规则/([*-])\s*([^*-]+)/说明:
    • 第一个捕获组([*-])匹配分隔符*或-,用来判断正负类型
    • \s*匹配分隔符后的空白字符,避免内容带多余前置空格
    • 第二个捕获组([^*-]+)匹配所有不是分隔符的连续字符,即分隔符对应的内容

可运行代码

<?php
$text = "* aaa aaa - bbb bbb - ccc * ddd * eee";
// 匹配所有分隔符和对应内容
preg_match_all('/([*-])\s*([^*-]+)/', $text, $matches);

$output = [];
foreach ($matches[1] as $key => $delimiter) {
    $content = trim($matches[2][$key]);
    $type = $delimiter === '*' ? 'Negative' : 'Positive';
    $output[] = ($key + 1) . " - {$type}: {$content}";
}

// 打印结果
echo implode(PHP_EOL, $output);

输出结果

和要求的效果完全一致:

1 - Negative: aaa aaa
2 - Positive: bbb bbb
3 - Positive: ccc
4 - Negative: ddd
5 - Negative: eee

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:36:02