【问题标题】:Break $content into array when conditions are met满足条件时将 $content 分解为数组
【发布时间】:2020-07-30 15:16:18
【问题描述】:

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

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

  • 类别名为Kids and Baby

我不能按字展开,因为我想将内容 kids and baby 保留在同一个数组条目中。
我也不能一直查询,因为这会耗费资源。

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

这是原始的 $content:

$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"
);

感谢您的指导。

【问题讨论】:

  • 有使用的类别列表吗?
  • 我觉得这有点含糊。您能否通过一些示例输入、您的搜索代码和预期输出填写更多信息?尝试添加特定的问题/用例/案例。
  • @NigelRen 是的,我们确实有一系列类别。
  • @Progrock 添加了更多详细信息。希望对你有帮助
  • 遗憾的是,这对于 SO 来说还是有点模糊,请查看如何询问。将类别作为描述之外的单独搜索方面将使您的任务更容易。

标签: php arrays string parsing symfony4


【解决方案1】:

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

然后用空格分解内容(这样它将类别文本保持在一起)。

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

<?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"
}

【讨论】:

  • 我的观点真的很棒!非常感谢你。将实施并标记为正确
猜你喜欢
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 2019-05-13
相关资源
最近更新 更多