Php 使用preg_split_DELIM_捕获和DELIM数组进行preg_分割

Php 使用preg_split_DELIM_捕获和DELIM数组进行preg_分割,php,arrays,preg-split,Php,Arrays,Preg Split,注意:我最近问了这个问题,但结果证明我正在寻找的解决方案比我最初认为的更先进 使用preg_split,如何将其拆分,请注意分隔符前的字符串不同: $string = "big red apple one purple grape some stuff then green apple yatta yatta red cherry green gape"; 我希望使用字符串数组作为分隔符,并希望它们包含在结果中。熟食者:[苹果、葡萄、樱桃] 我期望的输出是: Array("big red ap

注意:我最近问了这个问题,但结果证明我正在寻找的解决方案比我最初认为的更先进

使用preg_split,如何将其拆分,请注意分隔符前的字符串不同:

$string = "big red apple one purple grape some stuff then green apple yatta yatta red cherry green gape";
我希望使用字符串数组作为分隔符,并希望它们包含在结果中。熟食者:[苹果、葡萄、樱桃]

我期望的输出是:

Array("big red apple", "one purple grape", "some stuff then green apple", "yatta yatta red cherry", "green grape");
以下是我最初的想法:

$string = "big red apple one purple grape some stuff then green apple yatta yatta red cherry green gape";
$matches = preg_split('(apple|grape|cherry)', $string, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($matches);
它打印这个: 数组([0]=>大红[1]=>一个紫色[2]=>一些东西,然后是绿色[3]=>雅塔雅塔红色[4]=>绿色张口)


不带分隔符。

如果您修复了输入字符串中最后一个单词的打字错误,那么(一种可能的)模式是:

~(?<=apple|grape|cherry)\s*~

~(?如果您修复了输入字符串中最后一个单词的打字错误,那么(一种可能的)模式是:

~(?<=apple|grape|cherry)\s*~

~(?稍微简单一点,结果相同:

$string = "big red apple one purple grape some stuff then green apple yatta yatta red cherry green grape";
$re='/\S.*?\s(?:apple|grape|cherry)/';
preg_match_all($re,$string,$m);
var_dump($m[0]);

简单一点,结果相同:

$string = "big red apple one purple grape some stuff then green apple yatta yatta red cherry green grape";
$re='/\S.*?\s(?:apple|grape|cherry)/';
preg_match_all($re,$string,$m);
var_dump($m[0]);

您是否了解ReGeX(发音为re-jek)?您尝试过什么吗?RTLM?可能的转售?您是否了解ReGeX(发音为re-jek)?您尝试过什么吗?RTLM?可能的转售