如何使用这样的脚本或文本编辑器批量更新位于.html文件中的基本一对一密钥结构?


How can I bulk update a basic one-to-one key structure located in a.html file with script or text editor like this?

我有一个邮政编码到用户的一对一密钥结构,位于。html中,看起来像…

...
'80135': 'user1',
'80136': 'user1',
'80137': '',
'80138': '',
'80202': 'user2',
'80203': 'user2',
'80204': '',
'80205': '',
'80206': '',
'80207': '',
...

我想为user3取一个批量列表邮政编码,并填写或覆盖旧用户。例如,如果我输入user3的邮政编码(80202,80203,80204)那么我之前的代码块就会变成。

...
'80135': 'user1',
'80136': 'user1',
'80137': '',
'80138': '',
'80202': 'user3',
'80203': 'user3',
'80204': 'user3',
'80205': '',
'80206': '',
'80207': '',
...

文本编辑器的原因是完成我的集合现在,但理想情况下,它将是很好的有一个客户端应用程序,我们的非程序员团队可以更新和更改,因为他们喜欢,所以这个脚本将是很好的未来计划。我通过…将内容传递到我的网站

var list_load = {<?php include_once('list.html'); ?>};

因为我相信有些人可能对存储这些信息有另一种想法,这个列表很长,有35,000行代码,所以任何关于完全改变我的代码的想法都可以考虑迁移数据的过程。

根据您提供的信息,我假设您的示例代码是JSON对象的子集。我还将假设在您的对象中,邮政编码与用户之间只有一对一的关系,前提是您没有明确说明其他情况,并且假定现有的对象结构不允许一对多关系。考虑到所有这些假设,当前问题的解决方案是将JSON加载到PHP中,在那里进行更改,然后用更新后的JSON对象覆盖整个文件。

$json = file_get_contents('list.html');
$array = json_decode($json, true);
$oldUser = 'user2';
$newUser = 'user3';
$listZipCodes = array("80204"); // list of zip codes to update
// Update the JSON based on user ...
foreach ($array as $zipCode => $user) {
    if ($user === $oldUser) {
        $array[$zipCode] = $newUser;
    }
}
// Update the JSON based on zip code ...
foreach (array_keys($array) as $zipCode) {
    if (in_array($zipCode, $listZipCodes)) {
        $array[$zipCode] = $newUser;
    }
}
$json = json_encode($array);
file_put_contents('list.html', $json);

再一次,这都是假设list.html看起来像这样…

{
    "80135": "user1",
    "80136": "user1",
    "80137": "",
    "80138": "",
    "80202": "user2",
    "80203": "user2",
    "80204": "",
    "80205": "",
    "80206": "",
    "80207": ""
}

记住它必须是有效的一个有效的JSON对象符号在你的list.html为了PHP能够正确解析它。你现有的例子不会在PHP中工作,因为你使用单引号而不是双引号,这是JSON规范的要求。所以你必须确保这部分在你的list.html文件中有效。

除此之外,我强烈建议你采取这种方法,因为它会导致一些不容易解决的严重问题。例如,使用这种方法无法确保数据不会被破坏,因为任何两个PHP脚本都可能试图同时覆盖文件(没有数据完整性)。此外,如果列表变得足够大,那么在不花费大量不必要的CPU和内存问题的情况下,您无法轻松地实现这种规模。此外,您无法控制谁可以直接编辑文件,因此无法控制流向试图使用该数据的底层应用程序代码的数据流。

一个更好的解决方案是使用数据库,这样你既可以控制数据和它的用户权限,而且你可以为非程序员提供一个前端,通过你的前端,通过PHP编辑/修改/读取数据。