我有一个类别名称为$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"
);
感谢您的指导。
答案 0 :(得分:2)
对于每个类别,搜索该类别的内容,并用内容中不存在的字符替换空格。
然后用空格爆炸内容(因此它将类别文本保持在一起)。
稍后,只需将该字符替换回空格即可。
<?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"
}