Split/Explode PHP 中的一个字符串

Split/Explode a string in PHP

我需要拆分或分解字符串。

K1123-Food, Apple, Z3456-Egg, Mushroom, M9902-Plant, Soil, Water, Q8876-Medicine, Car, Splitter

变成类似

的东西
K1123-Food, Apple
Z3456-Egg, Mushroom
M9902-Plant, Soil, Water
Q8876-Medicine, Car, Splitter

欢迎提供有关如何应用 preg_splitexplode 的想法。

提前致谢。

这里有一个解决方案,使用 preg_match_all():

$s = 'K1123-Food, Apple, Z3456-Egg, Mushroom, M9902-Plant, Soil, Water, Q8876-Medicine, Car, Splitter';
$pattern = '/(\w\d+-\w+(, [^\d]*))(, |$)/';
$matches = [];

preg_match_all($pattern, $s, $matches);

print_r($matches[1]);

这输出

Array
(
    [0] => K1123-Food, Apple
    [1] => Z3456-Egg, Mushroom
    [2] => M9902-Plant, Soil, Water
    [3] => Q8876-Medicine, Car, Splitter
)

好的,这是一个尝试捕获 Toto 提到的内容的高级解决方案:

$s = 'K1123-Food, Apple2, 123-456, Mushroom, Z3456-Egg, Mushroom, M9902-Plant, Soil, Water, Q8876-Medicine, Car, Splitter';
$pattern = '/([A-Z]\d+-\w+(.(?!([A-Z]\d))+)+)(, |$)/';
$matches = [];

preg_match_all($pattern, $s, $matches);
print_r($matches[1]);

输出

Array
(
    [0] => K1123-Food, Apple2, 123-456, Mushroom
    [1] => Z3456-Egg, Mushroom
    [2] => M9902-Plant, Soil, Water
    [3] => Q8876-Medicine, Car, Splitter
)

请记住,永远不可能自动和正确地将结构放入其他非结构化内容中。 每个可能的解决方案 都会 对您的数据真正需要的结构做出一些假设。