我使用phppageBuilder编辑我的页面html内容,并在MySQL的Pages表中保存以下json生成的代码:

{"html":["[block slug=\"contact\" id=\"IDL8P4JHM1GYPVX0\"]"],"components":[[{"tagName":"phpb-block","content":"","attributes":{"slug":"contact","id":"IDL8P4JHM1GYPVX0"}}]],"css":"* { box-sizing: border-box; } body {margin: 0;}","style":[],"blocks":{"en":{"IDL8P4JHM1GYPVX0":{"settings":{"attributes":{"style-identifier":"IDL8P4QRULUOPXC0"}},"blocks":[],**"html":** <- all page html is here

我需要提取最后一个"html":data后的"块":[],以检索我的所有html代码输出到我的php主页.

PHP主页输出:

$s = mysqli_query($db,"SELECT `data` FROM `pages` WHERE `id` = 1");
$row = mysqli_fetch_array($s);
echo $row['data'];

但我得到了所有的JSON代码.我只需要从建造者那里得到我的html代码.

Phppagebuder来源:https://github.com/HansSchouten/PHPagebuilder

推荐答案

您有两种方法来解决这个问题. 首先,您可以获取所有数据并使用PHP进行解析:

$s = mysqli_query($mysqli,"SELECT `data` FROM `pages` WHERE `id` = 1");
$row = mysqli_fetch_array($s);

$data = json_decode($row[0], true);

preg_match('/id="([^"]+)"/', $data['html'][0], $m);

$id = $m[1];

echo $data['blocks']['en'][$id]['html'] . PHP_EOL ;

第二种方式是用MySQL解析JSON:

$s = mysqli_query($mysqli,"SELECT `data`->\"$.blocks.en.*.html\" FROM `pages` WHERE `id` = 1");
$row = mysqli_fetch_array($s);

var_dump($row[0]); 

php code online

Php相关问答推荐

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

以编程方式更新现有Yith WooCommerce Booking的状态

MySQLi是否在事务错误时删除保存点(并且仅删除保存点)?

获取要删除的图像的公共ID

创建一个新的可变产品及其属性以用于WooCommerce中的变体

将购买限制在WooCommerce中具有相同产品属性的项目

PHP测试字符串的所有POST值

Laravel Nova不使用数组键作为筛选器中的选项值

来自POST请求的(无效)json字符串中的奇怪字符(编码问题)

如何在PHP中组合日期范围

向WooCommerce管理订单总额添加自定义总额行

将一个表中的行连接为不同表MYSQL中的一列

PHP 解析 XML 以获取多个深度的所有字符串值

如何在 Phpunit 的静态提供程序中创建测试双打?

无法使用 slim 的父级容器

如何正确判断 PHP 是否已正确配置为使用 DOMDocument?

CodeIgniter 4中嵌套过滤器组不起作用

如何更改或管理Carbon时区,使其不会来回移动时钟

即使密码匹配,密码处理程序也会返回错误

我想更新表格中的结果并将它们发布到浏览器,但它不起作用