满足条件时将 $content 分解为数组
Break $content into array when conditions are met
我有一个包含类别名称的数组 $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"
);
感谢您的指导。
对于每个类别搜索该类别的内容,并将空格替换为内容中不存在的字符。
然后按空格展开内容(这样分类文本就会保持在一起)。
稍后只需将该字符替换回空格即可。
<?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"
}
我有一个包含类别名称的数组 $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"
);
感谢您的指导。
对于每个类别搜索该类别的内容,并将空格替换为内容中不存在的字符。
然后按空格展开内容(这样分类文本就会保持在一起)。
稍后只需将该字符替换回空格即可。
<?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"
}