PHP 括号解析数据

PHP Bracket Parsing Data

提问人:DTSolutions 提问时间:10/31/2023 更新时间:10/31/2023 访问量:27

问:

我正在尝试构建自己的页面构建器的简单版本。我被困在从代码中获取属性和值。

我的目标是构建一些可以采用如下代码块的东西:

[section id="section-post" class="" data-id="43" data-var="mosa"] 
[container width="full"] 
[row] 
[block id="block-3 " class="col-lg-12 col-md-12 col-sm-12 col-xs-12 block-3-css"] 
[content id="3"] [special_heading type="h1" id="content-3" class=""]Welcome Title[/special_heading] [/content] 
[content id="content-4"] [divider class="divider line"][/divider] [/content] 
[content id="5"] 
[text]<p>This is a paragraph.</p>[/text] 
[/content] 
[/block] 
[/row] 
[/container] 
[/section]

使用 php,找到所有括号,识别它们,提取它们的属性,并将它们用作变量,我可以传递到函数中以表单编辑它们的属性值。

有人能为我指出正确的方向吗?到目前为止,我已经能够使用下面的代码来识别括号及其中的内容。

$pattern = '/\[(\w+)([^\]]*)\]/';
if (preg_match_all($pattern, $page_data, $matches, PREG_SET_ORDER)) {
    foreach ($matches as $match) {
        $blockType = $match[1];
        $attributesString = $match[2];

        echo "TYPE: $blockType <br /> ATTR: $attributesString <hr />";

        if ($blockType == "content") {

        }
    }
}

我得到每个 [] 项目的输出:

类型: section ATTR:id=“section-post” class=“” data-id=“43” data-var=“mosa”

类型:容器 ATTR:width=“完整”

类型:row ATTR:

类型:块 ATTR:id=“block-3”class=“col-lg-12 col-md-12 col-sm-12 col-xs-12 block-3-css”

类型: 内容 ATTR:id=“3”

类型: special_heading ATTR:类型=“h1” id=“内容-3” 类=“”

我正在努力弄清楚接下来需要做什么才能找到分配属性及其值的东西。甚至可能有更好的方法来做到这一点?

例如,我如何正确地获得这样的东西?

$section_attr_id=“部分帖子”;

$section_attr_data_id=“43”;

有没有更好的方法可以代替这个?

PHP 解析

评论

2赞 Ken Lee 10/31/2023
为什么不使用类似XML的东西呢?official_documentation - xml-parse
0赞 mickmackusa 10/31/2023
这看起来很相关: PHP:使用正则表达式将数据属性转换为关联数组 您的最小可重现示例应该非常具体地表达所需的输出是什么——来自您提供的输入字符串。
3赞 Chris Haas 10/31/2023
我能想到的发明一种标记语言来涵盖另一种标记语言没有什么主要优势,至少在你所展示的内容中是这样。如前所述,可以使用 XML,甚至可以使用带有自定义标记的现代 HTML。混合标记最终会导致奇怪的转义和关闭标记规则。

答: 暂无答案