我有一个 html 标签的索引数组,每个索引都包含 html 开始和结束标签及其值。我想修改其中一些,例如我希望 li 标签用 ul 包裹在它们周围。但具有相同的数组顺序。Array([0] => <li>some text</li>[1] => <pre>text area data</pre>[2] => <li>some value</li>)这就是我想要的样子 Array([0] => <ul>[1] => <li>some text</li>[2] => </ul>[3] => <pre>text area data</pre>[4] => <ul>[5] => <li>some value</li>[6] => </ul>) $arr2 = []; $a=0; foreach($arr1 as $k => $v) { if($a == 0) $arr2[] = '<ul>'; $a=1; if(strpos($v, '<li>') !== false){ $arr2[] = $v; }
1 回答
九州编程
TA贡献1785条经验 获得超4个赞
此代码跟踪您当前是否在列表中,然后针对每个项目检查它是否以开头<li>以及状态。
如果它<li>不在列表中,则添加<ul>第一个并设置状态,如果不是,<li>则在列表中添加</ul>。
为了确保它关闭任何列表,在循环之后如果它在列表中,那么它会关闭标签......
$arr2 = [];
$inList = false;
foreach($arr1 as $index => $value)
{
if ( substr(trim($value), 0, 4) == "<li>" ) {
if ( ! $inList ) {
$arr2[] = '<ul>';
$inList = true;
}
}
else {
if ( $inList ) {
$arr2[] = '</ul>';
$inList = false;
}
}
$arr2[] = $value;
}
if ( $inList ) {
$arr2[] = '</ul>';
$inList = false;
}
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消