满足条件时将 $content 分解为数组

Break $content into array when conditions are met

我有一个包含类别名称的数组 $categories_array
我有一个包含大字符串的 $content 变量(产品描述)

我的意图是将$content分解成一个数组($content_array)。
那很容易。
内容还包含类别名称 问题如下:

我无法逐字展开,因为我想将内容 kids and baby 保留在同一个数组条目中。
我也不能一直查询,因为这会占用大量资源。

实现这样的目标的最佳方法是什么:

这是原始的$内容:

$content = "lorem ipsum bla bla bla cat1 bla bla bla kids and baby";

这是我的类别数组:

$categories_array = array(
    "cat1",
    "kids and baby",
    "cat3",
    ...
);

这是我的预期输出:

$content_array = array(
    "word1",
    "word2",
    "kids and baby",
    "word3"
);

感谢您的指导。

对于每个类别搜索该类别的内容,并将空格替换为内容中不存在的字符。

然后按空格展开内容(这样分类文本就会保持在一起)。

稍后只需将该字符替换回空格即可。

<?php

$content = "lorem ipsum bla bla bla cat1 bla bla bla kids and baby";

$categories_array = array(
    "cat1",
    "kids and baby",
    "cat3",
);  

foreach($categories_array as $category) {
  $content = str_replace($category, str_replace(' ', '·', $category), $content);
}

$content_array = explode(' ', $content);

$content_array = array_map(function ($content) {return str_replace('·', ' ', $content);}, $content_array);

var_dump($content_array);

输出:

array(10) {
  [0]=>
  string(5) "lorem"
  [1]=>
  string(5) "ipsum"
  [2]=>
  string(3) "bla"
  [3]=>
  string(3) "bla"
  [4]=>
  string(3) "bla"
  [5]=>
  string(4) "cat1"
  [6]=>
  string(3) "bla"
  [7]=>
  string(3) "bla"
  [8]=>
  string(3) "bla"
  [9]=>
  string(13) "kids and baby"
}