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

我有一个包含类别名称的数组$categories_array。

我有一个$content包含大字符串的变量(产品描述)


我的意图是爆炸$content成一个数组( $content_array)。

那很容易。

内容上还包含类别名称问题如下:


类别被命名为Kids and Baby

我无法按单词进行爆炸,因为我想将内容保留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"

);

谢谢您的指导。


开满天机
浏览 81回答 1
1回答

炎炎设计

对于每个类别,搜索该类别的内容,并将空格替换为内容中不存在的字符。然后按空格分解内容(这样它将把类别文本保持在一起)。稍后只需将该字符替换回空格即可。<?php$content = "lorem ipsum bla bla bla cat1 bla bla bla kids and baby";$categories_array = array(&nbsp; &nbsp; "cat1",&nbsp; &nbsp; "kids and baby",&nbsp; &nbsp; "cat3",);&nbsp;&nbsp;foreach($categories_array as $category) {&nbsp; $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) {&nbsp; [0]=>&nbsp; string(5) "lorem"&nbsp; [1]=>&nbsp; string(5) "ipsum"&nbsp; [2]=>&nbsp; string(3) "bla"&nbsp; [3]=>&nbsp; string(3) "bla"&nbsp; [4]=>&nbsp; string(3) "bla"&nbsp; [5]=>&nbsp; string(4) "cat1"&nbsp; [6]=>&nbsp; string(3) "bla"&nbsp; [7]=>&nbsp; string(3) "bla"&nbsp; [8]=>&nbsp; string(3) "bla"&nbsp; [9]=>&nbsp; string(13) "kids and baby"}
打开App,查看更多内容
随时随地看视频慕课网APP